PostgreSQL select 最大分组依据和附加值

PostgreSQL select max with group by and additional value

具有以下数据from a SELECT * FROM (SELECT...) AS foo

ID    Country   Area
1     US        100
1     UK        200
2     AU        150
2     NZ        250

你怎么能select ID 排名靠前的地区和国家?所以 GROUP BY IDMAX(DESC) 还包括 County.

查询结果为:

1     UK     200
2     NZ     250

试试这个

select ID,Country,Area
from (SELECT...) AS foo
WHERE Area = (SELECT MAX(Area)
              FROM (SELECT...) AS foo2
              WHERE foo.ID = foo2.ID )
SELECT DISTINCT ON (ID)
       ID, Country, Area
FROM   foo
ORDER  BY ID, Area DESC NULLS LAST;

详细说明和特殊情况下更快替代方案的链接:

  • Select first row in each GROUP BY group?