WITH one_week_interval AS (
SELECT week_start start_time, week_start + 7*24*60*60 end_time
FROM generate_series(
(EXTRACT(epoch FROM (SELECT min(created_at)::DATE FROM click_case)))::INTEGER,
(EXTRACT(epoch FROM (SELECT max(created_at)::DATE FROM click_case)))::INTEGER,
7*24*60*60) week_start
)
SELECT COUNT(*)
FROM click_case c
JOIN one_week_interval o
ON (EXTRACT( epoch FROM c.created_at::DATE))::INTEGER >= o.start_time
AND (EXTRACT( epoch FROM c.created_at::DATE))::INTEGER <= o.end_time
GROUP BY o.start_time
ORDER BY o.start_time