【发布时间】:2018-05-23 01:28:06
【问题描述】:
这是我的桌子的样子:
VIDEO_ID DATETIME APPROVED VIOLATION_COUNT VIDEO_DESCRIPTION
VIDEO1 2018-01-02 yes 1 a
VIDEO2 2018-06-02 no 2 b
VIDEO3 2018-07-04 yes 1 c
VIDEO4 2018-01-12 yes 1 b
VIDEO5 2018-06-02 no 2 c
VIDEO6 2018-07-29 yes 1 a
我需要按 VIDEO_TYPE 对这个表进行分组(我由 VIDEO_DESCRIPTION 确定,这就是我使用 SWITCH - CASE 语句的原因,请参阅下面的查询)。 然后,对于每个 VIDEO_TYPE,我需要计算两件事:
- VIOLATION_COUNT 和 的总和
- VIOLATION_COUNT 的总和,其中 APPROVED = "yes"。
所以我希望我的查询返回 3 列:VIDEO_TYPE、总和 VIOLATION_COUNT 和总和 VIOLATION_COUNT where APPROVED = 'yes'对于每个 VIDEO_TYPE。
我的问题是如何计算 VIOLATION_COUNT 的总和和 VIOLATION_COUNT 的总和 where APPROVED = "yes" IN THE SAME TIME?
这是我的查询:
SELECT
CASE
WHEN VIDEO_DESCRIPTION = 'a' THEN 'Video type 1'
WHEN VIDEO_DESCRIPTION = 'b' THEN 'Video type 2'
WHEN VIDEO_DESCRIPTION = 'c' THEN 'Video type 3'
ELSE 'Others' END AS VIDEO_TYPE,
SUM(VIOLATION_COUNT) AS VIOLATION_COUNT,
(select count(APPROVED) where APPROVED = 'yes') AS TRUE_POSITIVE_VIOL_COUNT, -- THIS IS NOT WORKING
FROM my_table
GROUP BY
VIDEO_TYPE
这个查询给了我这个错误:
无效操作:子查询使用未分组的列“my_table.approved” 来自外部查询;
【问题讨论】:
-
您需要实现“条件聚合”,其中
COUNT通过SUM和CASE模拟。
标签: sql amazon-redshift