#mysql #group-by
#mysql #группировка по
Вопрос:
Иметь таблицу, подобную этой
id date user call_count
1 2020-09-15 Tim 4
2 2020-09-14 Tim 6
3 2020-09-04 Jamie 1
4 2020-09-02 Tim 2
5 2020-09-07 Tim 5
6 2020-09-01 Jamie 1
7 2020-09-01 Tim 5
8 2020-09-10 Jamie 4
9 2020-09-12 Tim 5
10 2020-09-22 Tim 44
11 2020-09-22 Tony 32
Я хотел бы иметь один запрос, который группирует по дате, помещая каждого пользователя в качестве имени столбца и отображая их количество на эту дату. Прямо сейчас я выполняю это с помощью нескольких циклов выбора, но это некрасиво и неэффективно.
Результат должен выглядеть так
Date Tim Tony Jamie
2020-09-22 44 32
2020-09-15 4
2020-09-14 6
2020-09-12 5
2020-09-10 4
2020-09-07 5
2020-09-04 1
2020-09-02 2
2020-09-01 5 1
Я довольно долго искал что-то подобное, но не нашел многого. Спасибо
Ответ №1:
Используйте условную агрегацию:
SELECT
Date,
SUM(CASE WHEN user = 'Tim' THEN call_count END) AS Tim,
SUM(CASE WHEN user = 'Tony' THEN call_count END) AS Tony,
SUM(CASE WHEN user = 'Jamie' THEN call_count END) AS Jamie
FROM yourTable
GROUP BY
Date
ORDER BY
Date;