Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用以前的数据分组_Sql_Oracle_Group By_Cumulative Sum - Fatal编程技术网

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这样的人会告诉你的。

这不是一个窗口功能吗?