如何select几行共运行
How to select a few rows of Running total
我总共 运行
SELECT
id,
DepositValue,
action_date,
SUM(DepositValue) OVER(ORDER by action_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Running_total
以上selectreturns我以下:
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
我想要实现的是 select 仅 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'
请注意 window 规范 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
实际上是未指定时的默认值,因此您可以将其删除。
此外,您的原始查询缺少 FROM
子句,我添加了它。
我总共 运行
SELECT
id,
DepositValue,
action_date,
SUM(DepositValue) OVER(ORDER by action_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Running_total
以上selectreturns我以下:
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
我想要实现的是 select 仅 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'
请注意 window 规范 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
实际上是未指定时的默认值,因此您可以将其删除。
此外,您的原始查询缺少 FROM
子句,我添加了它。