sql-给定列中每个不同值的单行

sql-给定列中每个不同值的单行,sql,google-bigquery,Sql,Google Bigquery,在bigquery中,有没有一种方法可以使用sql(更具体地说)在给定列中为每个唯一值获取一行 我知道,使用一系列联合查询是可能的,在这些查询中,联合值与感兴趣的列中的不同值一样多。但我想知道是否有更好的方法。您可以使用行号: 这将返回任意行。您可以通过按调整顺序来控制哪一行 BigQuery中另一个有趣的解决方案使用结构: select array_agg(t limit 1)[ordinal(1)].* from t group by col; 如果需要特定的行,可以按X限制1按顺序添加订

在bigquery中,有没有一种方法可以使用sql(更具体地说)在给定列中为每个唯一值获取一行

我知道,使用一系列联合查询是可能的,在这些查询中,联合值与感兴趣的列中的不同值一样多。但我想知道是否有更好的方法。您可以使用行号:

这将返回任意行。您可以通过按调整顺序来控制哪一行

BigQuery中另一个有趣的解决方案使用结构:

select array_agg(t limit 1)[ordinal(1)].*
from t
group by col;

如果需要特定的行,可以按X限制1按顺序添加订单。

这里是一种更格式化的格式:

select tab.* except(seqnum)
from (
 select *, row_number() over (partition by column_x order by column_x) as seqnum
 from `project.dataset.table`
) as tab
where seqnum = 1

下面是BigQuery标准SQL

#standardSQL
SELECT AS VALUE ANY_VALUE(t)
FROM `project.dataset.table` t
GROUP BY col   
您可以使用以下示例中的虚拟数据测试、播放上述内容

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, 1 col UNION ALL
  SELECT 2, 1 UNION ALL
  SELECT 3, 1 UNION ALL
  SELECT 4, 2 UNION ALL
  SELECT 5, 2 UNION ALL
  SELECT 6, 3 
)
SELECT AS VALUE ANY_VALUE(t)
FROM `project.dataset.table` t
GROUP BY col 
结果

Row id  col  
1   1   1    
2   4   2    
3   6   3    

. . 我相信,当一个答案满足您的需求并且您喜欢时,处理堆栈溢出问题的标准做法是接受答案,而不是发布您自己的等效答案。
Row id  col  
1   1   1    
2   4   2    
3   6   3