Sql 使用以前的数据分组
有一个用户表Sql 使用以前的数据分组,sql,oracle,group-by,cumulative-sum,Sql,Oracle,Group By,Cumulative Sum,有一个用户表 ID | DATE_CR 按月分组 SELECT TO_CHAR (operation_time, 'YYYY-MM'), count(ID) from users GROUP BY TO_CHAR (operation_time, 'YYYY-MM') 我登记了月数 January 10 February 3 March 5 但在输出端,我想得到 January 10 February 13 March 18 一种方法是将当前查询放入CTE中,然后使用相关子查询来计算运行
ID | DATE_CR
按月分组
SELECT TO_CHAR (operation_time, 'YYYY-MM'), count(ID) from users GROUP BY TO_CHAR (operation_time, 'YYYY-MM')
我登记了月数
January 10
February 3
March 5
但在输出端,我想得到
January 10
February 13
March 18
一种方法是将当前查询放入CTE中,然后使用相关子查询来计算运行总数
WITH cte AS (
SELECT
TO_CHAR (operation_time, 'YYYY-MM') AS mdate,
COUNT(ID) AS total
FROM users
GROUP BY TO_CHAR (operation_time, 'YYYY-MM')
)
SELECT t1.mdate,
(SELECT SUM(t2.total) FROM cte t2
WHERE t2.mdate <= t1.mdate) AS running_total
FROM cte t1
另一种可能性能更好的方法是使用窗口函数。像@GordonLinoff这样的人会告诉你的。这不是一个窗口功能吗?