我有一张桌子:
id group data
1  a     10
2  a     20
3  b     10
4  b     20

我想得到最大“数据”值按“组”分组的记录的id,即。
id
2
4

最佳答案

便携式解决方案:

SELECT T1.id
FROM yourtable T1
JOIN (
    SELECT grp, MAX(data) AS data
    FROM yourtable
    GROUP BY grp
) T2
WHERE T1.grp = T2.grp AND T1.data = T2.data

PostgreSQL解决方案:
SELECT DISTINCT ON (grp) id
FROM yourtable
ORDER BY grp, data DESC;

注:我将列名从group改为grp,因为group是一个保留字。如果你真的想使用group你就得引用它。

关于sql - SQL GROUP BY问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4667311/

10-12 16:50