我有两行数据,如下所示:
group_id item_no
weoifne 1
weoifne 2
我想检索每个group_id
的最大item_no
。我正在使用这个查询:
SELECT MAX(item_no)
OVER (PARTITION BY group_id)
FROM my_table;
我只需要一条记录,因为我将这个查询嵌入到CASE WHEN
语句中,以便根据item_no
是否是每个组的最高值来应用逻辑。
期望输出:
2
实际输出:
2
2
如何将查询修改为每个group_id
只输出一条最大item_no
的记录?
使用聚合函数和GROUP BY,而不是窗口函数。
窗口函数,也称为分析函数,计算一组行上的值,并为每行返回一个结果。这与聚合函数不同,聚合函数为一组行返回单个结果。
- https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls
SELECT group_id, MAX(item_no)
FROM my_table
GROUP BY group_id;
如果您仍然想使用窗口函数,可以在脚本中使用DISTINCT来消除重复项,如下所示。DISTINCT适用于所有列
SELECT DISTINCT group_id
, MAX(item_no) OVER (PARTITION BY group_id)
FROM my_table