Как получить группировку строк в SQL - PullRequest
0 голосов
/ 26 июня 2019
I have a table like this:
id  name
1   washing
1   cooking
1   cleaning
2   washing
2   cooking
3   cleaning

, и я хотел бы иметь следующую группировку

id  name                      count
1   washing,cooking,cleaning    3
2   washing,cooking             2
3   cleaning                    1

Я пытался группировать по идентификатору, но могу показывать счет только после группировки по

SELECT id,
       COUNT(name)
FROM WORK
GROUP BY id

Но этовыдаст только количество, а не фактическую комбинацию имен.

Я новичок в SQL.Я знаю, что он должен быть реляционным, но должен быть какой-то способ.

Заранее спасибо!

1 Ответ

0 голосов
/ 26 июня 2019

в postgresql вы можете использовать array_agg

SELECT id, array_agg(name),  COUNT(*)
FROM WORK
GROUP BY id

в MySQL вы можете использовать group_concat

SELECT id, group_concate(name),  COUNT(*)
FROM WORK
GROUP BY id

или для красного смещения

SELECT id, listagg(name),  COUNT(*)
FROM WORK
GROUP BY id
...