mysql group_concat (сумма)

#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), "]")