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 ID
和 MAX(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?
具有以下数据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 ID
和 MAX(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?