【问题标题】:Postgresql - Cumulative sum of created usersPostgresql - 创建用户的累计总和
【发布时间】:2018-06-30 18:51:05
【问题描述】:

我有一个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:1 相同的问题,但在接受的答案的最后一个代码 sn-p 中,您几乎可以找到您在此处接受的答案。

标签: sql postgresql select count sum


【解决方案1】:

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

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;

【讨论】:

  • 比我想象的要简单得多,再也见不到树林了 :)
猜你喜欢
  • 2021-11-10
  • 2020-04-08
  • 1970-01-01
  • 2021-06-07
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
相关资源
最近更新 更多