我有一个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
前读:
答案 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;