每个组的SQL不同值-如何;分组方式;并获得每组不同值的列表?
我需要执行一个bigquery/标准SQL语句(或一系列语句),该语句执行“GROUPBY”,并为每个组返回一个不同值的列表(而不是count) 例如,对于标题为H1、H2的表每个组的SQL不同值-如何;分组方式;并获得每组不同值的列表?,sql,group-by,google-bigquery,distinct,Sql,Group By,Google Bigquery,Distinct,我需要执行一个bigquery/标准SQL语句(或一系列语句),该语句执行“GROUPBY”,并为每个组返回一个不同值的列表(而不是count) 例如,对于标题为H1、H2的表 H1 H2 --|-- a a a b a c b x b x b y “分组方式”H1的预期结果: 您可以使用STRING\u AGG() SELECT H1, STRING_AGG(H2) AS H2 FROM tablename group by H1 我建议您使用array\u agg
H1 H2
--|--
a a
a b
a c
b x
b x
b y
“分组方式”H1的预期结果:
您可以使用
STRING\u AGG()
SELECT H1, STRING_AGG(H2) AS H2
FROM tablename
group by H1
我建议您使用array\u agg()
:
如果您使用的是BigQuery,请学习使用数组。它们非常强大。如果您使用的是array\u 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
如果要再次展平上述不同分组:
select h1, item from (
select
h1,
array_agg(distinct h2) as items
from `dataset.table`
group by h1
), unnest(items) as item
您可以从mysql及其组_CONCAT以及psotgres和bigquery字符串_agg中获取帮助,以供将来参考。请记住,如果您使用mysql,则没有array_agg函数。但是你可以用group_concat来代替
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