BigQuery选择重复列的一行

时间:2018-07-16 22:32:55

标签: sql google-bigquery

因此,假设我有一个包含这些列和vlaues的表:

 ------------- ----------
| customer_id | order_id |
|-------------|----------|
|      14     |    3     |
|      17     |    9     |
|      17     |   12     |
|      17     |   33     |
|      44     |    1     |
 ------------------------

这是2列,其中一列可以获取重复值(customer_id),而另一列则不能获取重复值(order_id)。

如何查询表,以便获得唯一的customer_id值?重复customer_id时,我要获取具有最小order_id的行。因此,我假设为此需要一个ORDER BY语句。

如果我使用GROUP BY对列进行分组,则会收到类似以下的查询:

#standardSQL
SELECT customer_id, order_id FROM table
GROUP BY customer_id, order_id;

仍显示所有customer_id行。 我很累使用DISTINCT,但这产生了相同的值。

1 个答案:

答案 0 :(得分:3)

以下是用于BigQuery标准SQL

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 14 customer_id, 3 order_id UNION ALL
  SELECT 17, 9 UNION ALL
  SELECT 17, 12 UNION ALL
  SELECT 17, 33 UNION ALL
  SELECT 44, 1 
)
SELECT customer_id, MIN(order_id) AS order_id
FROM `project.dataset.table`
GROUP BY customer_id
-- ORDER BY customer_id  

结果为

Row customer_id order_id     
1   14          3    
2   17          9    
3   44          1