【发布时间】:2021-11-18 13:20:40
【问题描述】:
我需要统计当年每个月的新订阅者数量。
数据库结构:Subscriber(subscriber_id, create_timestamp, ...)
预期结果:
date | count
-----------+------
2021-01-01 | 3
2021-02-01 | 12
2021-03-01 | 0
2021-04-01 | 8
2021-05-01 | 0
我写了以下查询:
SELECT
DATE_TRUNC('month',create_timestamp)
AS create_timestamp,
COUNT(subscriber_id) AS count
FROM subscriber
GROUP BY DATE_TRUNC('month',create_timestamp);
有效但不包括计数为 0 的月份。它只返回表中存在的月份。喜欢:
"2021-09-01 00:00:00" 3
"2021-08-01 00:00:00" 9
【问题讨论】:
-
使用 generate_series 表示年份月份,然后加入您的查询。
-
@RahulBiswas 你能举个例子吗?我对 SQL 没有太多经验
-
请检查以下查询。
-
count of new subscribers- 定义“新”。同一个subscriber_id可以重复订阅吗?可以有 NULL 值吗?您的查询看起来好像我们只是计算所有行...
标签: sql postgresql left-join aggregate generate-series