因此,假设我有一个包含这些列和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
,但这产生了相同的值。
答案 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