SQL:将月度销售额与过去四个月的销售额相加
我需要的是按中心和月份汇总销售额,并获得过去4个月的销售额 这是我的表格:SQL:将月度销售额与过去四个月的销售额相加,sql,postgresql,Sql,Postgresql,我需要的是按中心和月份汇总销售额,并获得过去4个月的销售额 这是我的表格: center_id month_id sales_amt 1 201512 1000 1 201511 2000 1 201510 1500 1 201509 1700 1 201508 900 ... 这就是我需要的: center_id month_id
center_id month_id sales_amt
1 201512 1000
1 201511 2000
1 201510 1500
1 201509 1700
1 201508 900
...
这就是我需要的:
center_id month_id sales_amt sales_4_month
1 201512 1000 6200
1 201511 2000 6100
...
简单的方法。只需添加子查询来选择
SELECT
center_id, month_id, sales_amt, (
SELECT SUM(sub.sales_amt)
FROM foo sub
WHERE sub.month_id >= base.month_id-4
) as sales_4_month
FROM foo base
您还可以使用CTE您可以使用窗口功能来实现这一点:
select
center_id, month_id, sales_amt,
(
sales_amt +
lead (sales_amt,1,0) over (PARTITION BY center_id ORDER BY month_id desc) +
lead (sales_amt,2,0) over (PARTITION BY center_id ORDER BY month_id desc) +
lead (sales_amt,3,0) over (PARTITION BY center_id ORDER BY month_id desc)
) sales_4_month
from Sales
它应该比子查询快,但您不能忘记选择比您需要的多3个月!否则,lead函数将没有可计算的行。是的,它应该快得多。当间隔在年之间时,这将有问题。您是否尝试了一些方法?展示你的作品!来自:“不要问:你还没有试图找到答案的问题(展示你的作品!)”