Отфильтруйте получившуюся таблицу по номерам недель. Оставьте в таблице данные за 5, 7, 10, 33 и 48-ю недели
SELECT customer_id,
invoice_date,
total,
DATE_TRUNC('month', CAST(invoice_date AS timestamp)),
EXTRACT(WEEK FROM CAST(invoice_date AS timestamp))
FROM invoice
WHERE customer_id BETWEEN 20 AND 50
AND EXTRACT(WEEK FROM CAST(invoice_date AS TIMESTAMP)) IN (5,
7,
10,
33,
48);
Результат
customer_id invoice_date total date_trunc extract
20 2011-02-20 00:00:00 8.91 2011-02-01 00:00:00 7
21 2009-03-05 00:00:00 3.96 2009-03-01 00:00:00 10
Теперь можно отбирать заказы по месяцам и неделям — с помощью специальных функций это сделать просто.