您可以使用 SQL 中的窗口函数(window function)来实现这个功能
WITH data_with_cumulative AS (
SELECT
t.date,
t.value,
SUM(t.value) OVER (ORDER BY t.date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_value
FROM
your_table t
WHERE
t.date >= 'start_date' AND t.date <= 'end_date'
)
SELECT
date,
value
FROM
data_with_cumulative
WHERE
cumulative_value > 0
ORDER BY
date;
在这个示例中,首先使用 WITH
子句创建一个名为 data_with_cumulative
的临时表,包含原始表中的数据以及一个名为 cumulative_value
的字段,该字段使用 SUM()
窗口函数计算累计值。ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
表示窗口范围从最早的行到当前行。
接下来,从临时表中选择 date
和 value
字段,其中 cumulative_value
大于 0(或您感兴趣的任何其他条件)。最后,使用 ORDER BY
子句按日期对结果进行排序。
请注意,您需要将表名和日期范围替换为实际的表名和日期范围。
领取专属 10元无门槛券
手把手带您无忧上云