我正在创建统计模块。我的工作之一是用过去一周的注册用户总数创建情节。
问题是我从事的服务只有少数客户使用,所以经常发生没有人注册的日子。
表描述(简化)是:
TABLE users:
============
id serial NOT NULL,
date_created timestamp with timezone NOT NULL DEFAULT NOW()
要获得过去 7 天的总和,我使用
SELECT
COUNT(id) as ile,
DATE_TRUNC('day', date_created) as day
FROM
users
WHERE
date_created >= now() - INTERVAL '7 days'
GROUP BY 2
ORDER BY 2
一切正常,Postgres 返回例如:
ile | day
===========================
2 | "2013-09-23 00:00:00"
1 | "2013-09-25 00:00:00"
除了它省略了 0 计数的天数。当然我必须解析这个查询的结果(在这种情况下:PHP + Symfony)所以我可以遍历所需的日期范围并填补空白,但我想知道是否有简单的方法让 PostgreSQL 为我做这件事,所以它返回如下内容:
ile | day
===========================
2 | "2013-09-23 00:00:00"
0 | "2013-09-24 00:00:00"
1 | "2013-09-25 00:00:00"
0 | "2013-09-26 00:00:00"
0 | "2013-09-27 00:00:00"
0 | "2013-09-28 00:00:00"
0 | "2013-09-29 00:00:00"