【问题标题】:Mysql Counting different column with group byMysql通过分组计算不同的列
【发布时间】:2018-08-08 15:07:23
【问题描述】:

我有一个表格,其中每一行代表一个带有 id、日期和原因的更正

id | date                | causes
___________________________________

1  | 2018-01-29 08:49:19 | crash
2  | 2018-08-08 10:03:37 | timeout
3  | 2018-06-26 07:48:12 | other

我使用这个sql请求来获取每月修正的次数

SELECT YEAR(date) Year, MONTH(date) Month, count(*) Total FROM correction group by YEAR(date), MONTH(date)

它给了我这样的结果

Year | Month | Total
____________________

2018 |   1   | 42
2018 |   2   | 69
2018 |   3   | 50

是否可以修改请求以获取每个原因的结果数量并获得如下结果:

 Year | Month | Total | crash | timeout | other
 ____________________________________________

 2018 |   1   | 42   | 10     | 12      | 20
 2018 |   2   | 69   | 9      | 50      | 10
 2018 |   3   | 50   | 10     | 20      | 20

【问题讨论】:

    标签: mysql sql group-by count


    【解决方案1】:

    你需要条件聚合:

    SELECT YEAR(date) Year, MONTH(date) Month, COUNT(*) Total,
           SUM(causes = 'crash') crash,
           SUM(causes = 'timeout') timeout,
           SUM(causes = 'other') other
    FROM correction c 
    GROUP BY YEAR(date), MONTH(date);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2022-11-22
      • 2013-01-16
      • 2015-05-25
      • 2018-11-29
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多