SELECT *
FROM (
SELECT EXTRACT(WEEK FROM j.updated_at) as "week", count(j.id)
FROM jobs
WHERE EXTRACT(YEAR FROM j.updated_at)=2009
GROUP BY
EXTRACT(WEEK FROM j.updated_at)
ORDER BY week DESC
LIMIT 12
) q
ORDER BY
week ASC
Please note that if you have an index on updated_at, you can rewrite this query a bit to make it more efficient:
SELECT week,
(
SELECT COUNT(j.id)
FROM jobs
WHERE updated_at >= start_week
AND updated_at < end_week
)
FROM (
SELECT week,
'04.01.2009'::DATE - EXTRACT(DOW FROM '04.01.2009'::DATE)::INTEGER + week * 7
'04.01.2009'::DATE - EXTRACT(DOW FROM '04.01.2009'::DATE)::INTEGER + week * 7 + 7
FROM generate_series(42, 53) week
) q
source
share