Mysql Подсчет другой столбец с группой по

0

У меня есть таблица, где каждая строка представляет собой коррекцию с идентификатором, датой и причинами

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
Теги:
count
group-by

1 ответ

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);
  • 0
    Спасибо! это сработало :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню