SQL:获得月度销售额以及过去四个月的销售额

时间:2015-12-18 15:23:34

标签: sql postgresql

我需要的是按中心和月份汇总销售额,并获得过去4个月的销售额。

这是我的表格:

gem install json --platform=ruby --verbose

这就是我需要的:

center_id   month_id    sales_amt
1           201512      1000
1           201511      2000
1           201510      1500
1           201509      1700
1           201508      900
...

2 个答案:

答案 0 :(得分:0)

简单的方法。只需将子查询添加到SELECT

即可
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

答案 1 :(得分:0)

您可以使用窗口功能来实现此目的:

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个月以上!否则,引导函数将没有要计算的行。