获取 GroupBy sql 中的 DISTINCT 值列表
Get DISTINCT list of values within GroupBy sql
我有这个Table
place subplace
A x
A x
B x
A y
B y
A y
A z
当我执行此查询时
SELECT place, count(distinct subplace) AS count_subplace
from table
GROUP BY place
我得到结果
place count_subplace
A 3
B 2
现在我想要不同元素的列表而不是计数
我知道我们可以使用 string_agg
如何在其中调用 distinct 和 groupby
我想要类似
的结果
place subplace_list
A x,y,z
B x,y
这个我试过了,不行
SELECT place, string_agg(distinct subplace,',') AS list_subplace
from table
GROUP BY place
因为string_agg
里面不支持distinct
。
您可以尝试使用子查询来 distinct
您的结果集。
查询 1:
SELECT place, string_agg(subplace,',') AS list_subplace
from (select distinct place,subplace from t) t1
GROUP BY place
| place | list_subplace |
|-------|---------------|
| A | x,y,z |
| B | x,y |
我有这个Table
place subplace
A x
A x
B x
A y
B y
A y
A z
当我执行此查询时
SELECT place, count(distinct subplace) AS count_subplace
from table
GROUP BY place
我得到结果
place count_subplace
A 3
B 2
现在我想要不同元素的列表而不是计数
我知道我们可以使用 string_agg
如何在其中调用 distinct 和 groupby
我想要类似
的结果place subplace_list
A x,y,z
B x,y
这个我试过了,不行
SELECT place, string_agg(distinct subplace,',') AS list_subplace
from table
GROUP BY place
因为string_agg
里面不支持distinct
。
您可以尝试使用子查询来 distinct
您的结果集。
查询 1:
SELECT place, string_agg(subplace,',') AS list_subplace
from (select distinct place,subplace from t) t1
GROUP BY place
| place | list_subplace |
|-------|---------------|
| A | x,y,z |
| B | x,y |