【发布时间】:2015-08-03 10:44:55
【问题描述】:
我正在尝试这个查询
SELECT date_trunc('day', commit_at) AS day, count(*)
FROM commits
GROUP BY date_trunc('day', commit_at)
ORDER BY date_trunc('day', commit_at) ASC;
然后它返回
day | count
---------------------+-------
2015-05-18 00:00:00 | 5
2015-05-19 00:00:00 | 2
2015-05-21 00:00:00 | 2
(3 lignes)
问题是:我怎样才能强制空天出现在结果中?
day | count
---------------------+-------
2015-05-18 00:00:00 | 5
2015-05-19 00:00:00 | 2
2015-05-20 00:00:00 | 0
2015-05-21 00:00:00 | 2
(3 lignes)
【问题讨论】:
-
SQL 无法从无到有创建数据。您要么必须有一个带有日期的系统,要么使用一种方法来创建这些日期以加入或联合。例如,返回日期范围之间的所有日期的递归 CTE。回到这个集合,这样你就可以得到所有的日期。这是一种方法:stackoverflow.com/questions/13100445/… 看看@a_horse_with_no_name 如何提供答案或 erwin 的...
-
好的,所以想法是在第一个日期和最后一个日期之间
generate_series然后查询这些日期?我试过了,但如果有人有例子,我就无法工作 -
查看第一条评论中的链接,提供了示例,是的,Erwin 使用
generate_series
标签: sql postgresql select aggregate-functions