例:2015年1月1日から今日までの日付を生成する場合
SELECT *
FROM generate_series('2015-01-01'::date, CURRENT_DATE, '1 day')
-
2015-01-01 00:00:00+09
~2015-05-26 00:00:00+09
の日付が出来た。
generate_series
2015-01-01 00:00:00+09
2015-01-02 00:00:00+09
:
:
2015-05-25 00:00:00+09
2015-05-26 00:00:00+09
COUNT(*)して無い日は「0」とするような集計に用いた
- 日付ごとにコメントが何件あるか数え、コメントの無い日は「0」とするような場合に用いた。
SELECT DATE(a.*) AS date, COALESCE(b.cnt, 0)
FROM generate_series('2015-01-01'::date, CURRENT_DATE, '1 day') AS a
LEFT JOIN (
SELECT DATE(created) AS date, COUNT(*) AS cnt
FROM comments
WHERE created >= '2015-01-01 00:00:00'
GROUP BY date
) AS b ON (a.date = b.date)