使用SQL中的窗口函数和子查询来解决该问题。以PostgreSQL为例,代码示例如下:
SELECT group_id, value
FROM (
SELECT group_id, value,
ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY value DESC) as row_num
FROM my_table
) sub
WHERE row_num = 1;
其中,my_table是要查询的表,group_id是分组的列名,value是要获取最大值的列名。此代码将通过子查询查询每个组的最大值,并通过窗口函数ROW_NUMBER()获得每个组的最大值在子查询中的排名。最后,外层SELECT语句筛选出每个组的最大值。
注意:不同的数据库系统可能会有不同的窗口函数和子查询语法。此处提供的是PostgreSQL的示例代码。
上一篇:按组获取相关列值