Postgresql - 创建用户的累计总和

时间:2018-01-22 07:28:47

标签: sql postgresql select count sum

我有一个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

前读:

1 个答案:

答案 0 :(得分:2)

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

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;