В приведенном ниже коде я выбираю 42-дневный период и группирую его по SNAPSHOT_WEEK (где SNAPSHOT_WEEK имеет число от 1 до 52 (53) в течение года).
SELECT
CASE
WHEN video_code = 'A' THEN 'Seller'
WHEN video_code = 'B' THEN 'Vendor'
WHEN video_code = 'C' THEN 'Others'
END AS CATEGORY
TO_CHAR(snapshot_time - DATE_PART('dow', snapshot_time)::int + 4, 'IW') AS SNAPSHOT_WEEK,
SUM(VIOLATION_COUNT)
FROM my_table
WHERE 1=1
AND snapshot_time BETWEEN '20180505'::date - '41 days'::interval AND '20180505'::date -- to calculate WoW
GROUP BY
CATEGORY, SNAPSHOT_WEEK;
Вывод для этого запроса выглядиткак это:
CATEGORY WEEK OR MONTH SUM_VIOLATION_COUNT
A 14 954
B 14 454
C 14 299
A 15 954
B 16 454
Возможно ли, в том же запросе, , кроме группировки по неделям, сгруппируйте эти данные по месяцам, где месяц должен начинаться с 28-го числа одного месяца до 28-й секундымесяц?
Например, в моем выводе мне нужен столбец, в котором будут показаны следующие значения:
CATEGORY WEEK OR MONTH SUM_VIOLATION_COUNT
A 14 954
B 14 454
C 14 299
A 15 954
B 16 454
C 17 299
A 28 March 9354
B 28 March 2454
C 28 March 5354
A 28 April 1354
...... ..... .....
Где «28 марта» - число нарушений в период с 28 февраля по 28 марта;«28 апреля» - число нарушений в период с 28 февраля по 28 апреля и т. Д.
Возможно ли сделать этот же запрос?