如何在SQL中进行行分组

时间:2019-06-26 18:14:30

标签: sql amazon-redshift string-aggregation

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

我尝试按ID分组,但是只能按分组后显示计数

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

但这只会提供计数,而不是名称的实际组合。

我是SQL新手。我知道它必须是关系型的,但必须有某种方式。

谢谢!

1 个答案:

答案 0 :(得分:0)

在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