问题
With the following data from a SELECT * FROM (SELECT...) AS foo:
ID Country Area
1 US 100
1 UK 200
2 AU 150
2 NZ 250
how can you select the top area and country by ID? So GROUP BY ID and MAX(DESC) but also include the County.
The the result of the query would be:
1 UK 200
2 NZ 250
回答1:
SELECT DISTINCT ON (ID)
ID, Country, Area
FROM foo
ORDER BY ID, Area DESC NULLS LAST;
Detailed explanation and links to faster alternatives for special cases:
- Select first row in each GROUP BY group?
回答2:
Try this
select ID,Country,Area
from (SELECT...) AS foo
WHERE Area = (SELECT MAX(Area)
FROM (SELECT...) AS foo2
WHERE foo.ID = foo2.ID )
来源:https://stackoverflow.com/questions/30352438/postgresql-select-max-with-group-by-and-additional-value