获取 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

Results:

| place | list_subplace |
|-------|---------------|
|     A |         x,y,z |
|     B |           x,y |