【问题标题】:Conditional Aggregation with SUM and COUNT combined (different columns)结合 SUM 和 COUNT 的条件聚合(不同的列)
【发布时间】:2015-03-26 12:45:14
【问题描述】:

我有一张桌子:

State      City     Class   Population      
 S1         SC1       A         10
 S1         SC2       B         5
 S1         SC3       A         7
 S2         S2C1      B         6
 S2         S2C2      A         13
 S2         S2C3      A         10

查询所需的结果集:

States     Count_of_Class_A_Cities     Total Population of State
  S1                 2                           22
  S2                 2                           29

这可以使用条件总和和计数聚合来实现吗?或枢轴?并且不在 select 语句中使用内部计数或内部求和语句。

谢谢。

【问题讨论】:

    标签: sql count pivot sql-optimization


    【解决方案1】:
        SELECT
            State AS States ,
            COUNT(CASE WHEN Class = 'A' THEN 1 END) AS Count_of_Class_A_Cities ,
            SUM(Population) AS Total_Population_of_State
    FROM TABLE
    
        GROUP BY
            State 
    

    【讨论】:

      【解决方案2】:

      仅计算 A 城市时的用例:

         select state,
                sum(case when class = 'A' then 1 else 0 end) as Count_of_Class_A_Cities,
                sum(Population) as Total_Population_of_State
         from tablename
         group by state 
      

      【讨论】:

        猜你喜欢
        • 2021-10-31
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 2020-12-12
        • 2021-08-23
        • 2020-01-14
        • 2020-02-06
        • 1970-01-01
        相关资源
        最近更新 更多