【发布时间】:2018-05-29 15:42:35
【问题描述】:
在下面的代码中,我选择了 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
...... ..... .....
其中“3 月 28 日” - 表示 2 月 28 日至 3 月 28 日之间的违规次数; “4 月 28 日” - 2 月 28 日至 4 月 28 日等期间的违规次数。
可以使用相同的查询吗?
【问题讨论】:
标签: sql amazon-redshift