如何选择Running total的几行



我已经运行了全部

SELECT 
id, 
DepositValue, 
action_date,
SUM(DepositValue)  OVER(ORDER by action_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Running_total

上面的选择返回给我以下内容:

id  action_date   DepositValue      Running_total
1   2020-04-01         20                20
2   2020-04-02         2                 22
3   2020-04-03         8                 30
4   2020-04-04         10                38
5   2020-04-05         14                48
6   2020-04-06         15                62
7   2020-04-07         22                77
8   2020-04-08         12                99
9   2020-04-09         4                 103

我想要实现的是只选择Running_total的一部分依赖于action_date,并且已经计算出了这样的值。

id  action_date   DepositValue      Running_total
3   2020-04-03         8                 30
4   2020-04-04         10                38
5   2020-04-05         14                48

您可以将查询转换为子查询,并在外部查询中进行筛选:

SELECT *
FROM (
SELECT 
id, 
DepositValue , 
action_date, 
SUM(DepositValue) OVER(ORDER by action_date) AS Running_total
FROM mytable
) t
WHERE action_date BETWEEN '2020-04-03' AND '2020-04-05'

请注意,窗口规范ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW实际上是未指定时的默认值,因此您可以将其删除。

此外,您最初的查询缺少FROM子句,我添加了它。

最新更新