SQL 每组不同的值 - 如何 "group by" 并获取每组不同值的列表?

SQL distinct values per group - how to "group by" and get a list of distinct values per group?

我需要执行 bigquery/standard SQL 语句(或一系列语句)来执行 "group by" 和 returns 每个组的不同值列表(不算数)。

例如对于具有 headers H1、H2

的表格
H1 H2  
--|--
a  a   
a  b
a  c
b  x
b  x
b  y

"group by" H1 的预期结果:

a->a,b,c
b->x,y

您可以使用 STRING_AGG() - 在此处找到 reference

SELECT H1, STRING_AGG(H2) AS H2 
FROM tablename
group by H1

我建议您使用 array_agg():

select h1, array_agg(h2)
from t
group by h1;

如果您使用的是 BigQuery,请学习使用数组。他们很强大。

如果您正在使用 array_agg,请不要忘记使用 DISTINCT

select h1, array_agg(DISTINCT h2)
from t
group by h1;

使用 BigQuery 数组。

select 
   h1, 
   array_agg(distinct h2) as items
from `dataset.table`
group by h1

如果你想让上面的distinct分组再次展平:

select h1, item from (
   select 
      h1, 
      array_agg(distinct h2) as items
   from `dataset.table`
   group by h1
), unnest(items) as item