I\'ve a database table commits
with the following columns:
id | author_name | author_email | author_date (timestamp) | total_lines
It has been very long since this question was asked.
Anyways, if at all anyone comes through this.
If you want the count of all the intermediate weeks as well where there are no commits/records, you can get it by providing a start_date
and end_date
to generate_series()
function
SELECT t1.year_week week,
t2.commit_count
FROM (SELECT week,
To_char(week, 'IYYY-IW') year_week
FROM generate_series('2020-02-01 06:06:51.25+00'::DATE,
'2020-04-05 12:12:33.25+00'::
DATE, '1 week'::interval) AS week) t1
LEFT OUTER JOIN (SELECT To_char(author_date, 'IYYY-IW') year_week,
COUNT(author_email) commit_count
FROM commits
GROUP BY year_week) t2
ON t1.year_week = t2.year_week;
The output will be:
week | commit_count
----------+-------------
2020-05 | 2
2020-06 | NULL
2020-07 | 1