【问题标题】:SQL Group and calculate 2 different aggregated function in the same timeSQL 分组并同时计算 2 个不同的聚合函数
【发布时间】: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 通过SUMCASE 模拟。

标签: sql amazon-redshift


【解决方案1】:

您可以添加一个 SUM(CASE) 来解决这个问题:

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,
      SUM(CASE WHEN APPROVED = 'yes' THEN 1 ELSE 0 END) AS TRUE_POSITIVE_VIOL_COUNT
FROM     tbl
GROUP BY VIDEO_DESCRIPTION;
视频类型 | VIOLATION_COUNT | TRUE_POSITIVE_VIOL_COUNT :----------- | --------------: | ----------------------: 视频类型 1 | 2 | 2 视频类型 2 | 3 | 1 视频类型 3 | 3 | 1

db小提琴here

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2011-03-27
    • 1970-01-01
    • 2018-07-03
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多