鉴于此数据集:
ID Name City Birthyear
1 Egon Spengler New York 1957
2 Mac Taylor New York 1955
3 Sarah Connor Los Angeles 1959
4 Jean-Luc Picard La Barre 2305
5 Ellen Ripley Nostromo 2092
6 James T. Kirk Riverside 2233
7 Henry Jones Chicago 1899
Run Code Online (Sandbox Code Playgroud)
我需要找到3个最老的人,但每个城市只有一个.
如果它只是三个最古老的,它将是......
然而,由于Egon Spengler和Mac Taylor都位于纽约,Egon Spengler将退出,而下一个(Sarah Connor /洛杉矶)将会进入.
优雅的解决方案?
更新:
目前PConroy的变体是最好/最快的解决方案:
SELECT P.*, COUNT(*) AS ct
FROM people P
JOIN (SELECT MIN(Birthyear) AS Birthyear
FROM people
GROUP by City) P2 …Run Code Online (Sandbox Code Playgroud)