在SQL中,可以使用窗口函数来实现按日期进行滚动求和。以下是一个示例代码,假设有一个名为sales
的表,包含日期(date
)和销售额(amount
)两列:
SELECT
date,
amount,
SUM(amount) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS rolling_sum
FROM
sales
ORDER BY
date;
上述代码中,SUM(amount) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
表示在按日期排序的窗口中,计算当前行及其前6行的销售额总和。
例如,假设sales
表中有以下数据:
date | amount
------------------
2021-01-01 | 100
2021-01-02 | 200
2021-01-03 | 150
2021-01-04 | 300
2021-01-05 | 250
2021-01-06 | 400
2021-01-07 | 350
2021-01-08 | 200
2021-01-09 | 300
2021-01-10 | 400
运行上述代码后,将得到以下结果:
date | amount | rolling_sum
---------------------------------
2021-01-01 | 100 | 100
2021-01-02 | 200 | 300
2021-01-03 | 150 | 450
2021-01-04 | 300 | 750
2021-01-05 | 250 | 1000
2021-01-06 | 400 | 1400
2021-01-07 | 350 | 1750
2021-01-08 | 200 | 1750
2021-01-09 | 300 | 1750
2021-01-10 | 400 | 1750
可以看到,rolling_sum
列显示了每个日期及其前6天的销售额总和。