每个组的SQL不同值-如何“分组依据”并获取每个组的不同值列表?

时间:2019-08-20 10:03:29

标签: sql group-by google-bigquery distinct

我需要执行一个“分组依据”的bigquery /标准SQL语句(或一系列语句),并为每个组(不计数)返回不同值的列表。

例如对于标题为H1,H2的表

H1 H2  
--|--
a  a   
a  b
a  c
b  x
b  x
b  y

“分组依据” H1的预期结果:

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我建议您使用array_agg()

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

如果您使用的是BigQuery,请学习使用数组。它们非常强大。

答案 2 :(得分:1)

如果您使用的是array_agg,请不要忘记使用DISTINCT

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

答案 3 :(得分:0)

使用BigQuery数组。

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

如果您要再次展平上述不同的分组:

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