#mysql
#mysql #группа-объединение
Вопрос:
табличка:
name time data AAA 2021-10-1 13:05:00 11 AAA 2021-10-1 13:05:00 20 AAA 2021-10-1 14:10:00 35 BBB 2021-10-1 13:05:00 20 BBB 2021-10-1 13:05:00 20 BBB 2021-10-1 14:10:00 10 CCC 2021-10-1 14:10:00 8
я испытан :
выберите имя,group_concat(данные) из НЗП, где время между «2021-10-26 00:00:00» и «2021-10-26 23:59:59» ГРУППА ПО имени
Результат:
name data AAA 11,20,35 BBB 20,20,10 CCC 8
хотите, чтобы сумма(данные) группировалась по часам(времени), результат был таким:
name data AAA [31,35] BBB [40,10] CCC [ 0,18]
Комментарии:
1. Какое значение имеет отображение 0 в выходных данных? Возможно, уместно показать, что использует group_concat.
2. group_concat(сумма(данные))
3. выберите имя,group_concat(сумма(данные)) из НЗП, где время между «2021-10-26 00:00:00» и «2021-10-26 23:59:59» ГРУППА ПО имени
4. Вложенные выборки — внутренняя: СУММА(данные) ГРУППИРУЮТСЯ ПО времени; внешняя с использованием GROUP_CONCAT.
Ответ №1:
Это занимает 2 шага:
SELECT name, GROUP_CONCAT(sum_data) FROM ( SELECT name, time, SUM(data) AS sum_data FROM tbl GROUP BY name, time ) AS x
(И я не вижу, чтобы «поворот» был уместен.)
Если вам нужны скобки, используйте CONCAT("[", GROUP_CONCAT(sum_data), "]")