【问题标题】:Group rows with sum and join (Build summary)使用 sum 和 join 对行进行分组(构建摘要)
【发布时间】:2014-01-13 04:51:55
【问题描述】:

有一个这样的行集:

| ID |     OP_CODE | OWNER |  MEASURE | COUNT |
|----|-------------|-------|----------|-------|
|  1 | Operation 1 |     1 | Geometry |    42 |
|  2 | Operation 1 |     1 | Geometry |    48 |
|  3 | Operation 1 |     1 |   Vacuum |    29 |
|  4 | Operation 1 |     1 |  Electro |    14 |
|  5 | Operation 1 |     2 | Geometry |    87 |
|  6 | Operation 1 |     2 | Geometry |   112 |
|  7 | Operation 1 |     2 |   Vacuum |    78 |
|  8 | Operation 1 |     3 |   Vacuum |    56 |
|  9 | Operation 1 |     3 |  Electro |    78 |

我想按 Owner 对行进行分组,并将其他度量(MEASURE 列的值)与列 Count 的总和合并/加入到这个结果中,如下所示:

| OWNER | GEOMETRY_CNT | VACUUM_CNT | ELECTRO_CNT | TOTAL_CNT |
|-------|--------------|------------|-------------|-----------|
|     1 |           90 |         29 |          14 |       133 |
|     2 |          199 |         78 |      (null) |       277 |
|     3 |       (null) |         56 |          78 |       134 |

在这种情况下,Geometry_cnt、Vacuum_cnt、Electro_cnt 是第一个表中相应值的总和:

Owner_1_Geometry_cnt=42+48=90;

Owner_1_Vacuum_cnt=29;

Owner_1_Electro_cnt=14;

所有者_1_TOTAL=29+14+90=133;

我怎样才能得到这个行集?

SQL Fiddle

【问题讨论】:

    标签: mysql sql select group-by sum


    【解决方案1】:

    试试这个:

    SELECT a.OWNER, SUM(IF(a.MEASURE = 'Geometry', a.COUNT, 0)) GEOMETRY_CNT, 
           SUM(IF(a.MEASURE = 'Vacuum', a.COUNT, 0)) VACUUM_CNT, 
           SUM(IF(a.MEASURE = 'Electro', a.COUNT, 0)) ELECTRO_CNT, 
           SUM(a.COUNT) TOTAL_CNT
    FROM operations_schedule a 
    GROUP BY a.OWNER
    

    查看SQL FIDDLE DEMO

    输出

    | OWNER | GEOMETRY_CNT | VACUUM_CNT | ELECTRO_CNT | TOTAL_CNT |
    |-------|--------------|------------|-------------|-----------|
    |     1 |           90 |         29 |          14 |       133 |
    |     2 |          199 |         78 |           0 |       277 |
    |     3 |            0 |         56 |          78 |       134 |
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2014-11-14
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      相关资源
      最近更新 更多