Postgresql - 已创建用户的累计总数

3

我有一个users表格,其中包含每个用户创建时的时间戳。 我想得到每月创建用户的累积总数。

我有以下查询可用,但它显示每天的总和。 我很难将其转换为每月基础。

SELECT 
    created_at,
    sum(count(*)) OVER (ORDER BY created_at) as total
FROM users
GROUP BY created_at 

预期输出:
created_at  count
-----------------
2016-07  100
2016-08  150
2016-09  200
2016-10  500

原文:


你能给我们展示一下你期望的输出结果吗?有不止一种方式来解释你的问题。 - Tim Biegeleisen
可能是在PostgreSQL中计算累积总和的重复问题。 - moooeeeep
我已经添加了预期输出。 所提到的问题没有回答我的问题,因为那里没有按每月分组。 - herrherr
这不是完全相同的问题,但在被接受的答案的最后一段代码片段中,你几乎可以找到与你在这里接受的答案几乎完全相同的答案。 - moooeeeep
1个回答

4

我会采取两步方法。首先,使用内部查询来计算每个月创建了多少用户。然后,将此查询包装在另一个查询中,计算这些计数的累积总和:

SELECT   created_at, SUM(cnt) OVER (ORDER BY created_at ASC)
FROM     (SELECT   TO_CHAR(created_at, 'YYYY-MM') AS created_at, COUNT(*) AS cnt
          FROM     users
          GROUP BY TO_CHAR(created_at, 'YYYY-MM')) t
ORDER BY 1 ASC;

比我想象的简单多了,之前看得太细了,都看不清大局了 :) - herrherr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接