Можете да използвате generate_series()
за да избегнете сложната аритметика на CTE и датата. Ето един пример, за да започнете:
select d, d + interval '6 days'
from generate_series('2016-01-01'::date, '2016-12-31'::date, '1 day'::interval) d
where date_trunc('week', d) = d
Ще искате да добавите казус през втория срок, за да премахнете всичко през 2017 г., и може да бъде пренаписано, за да стъпи седмица наведнъж, но това трябва да ви отведе на правилния път.