下面代码的问题是,如果有两个最高工资,每年仍然只返回一个值。我想要它,以便如果有多个玩家并列最大值,则返回所有玩家。使用TOP在postgresql中不起作用...
SELECT MAX(salaries.pay)
FROM salaries
WHERE salaries.year = 2015
OR salaries.year = 2016
GROUP BY salaries.year
LIMIT 1;
然后加入桌子回到salaries
,
SELECT *
FROM salaries
JOIN (
SELECT year, MAX(pay)
FROM salaries
WHERE year IN ( 2015 , 2016 )
GROUP BY year
) AS ms
USING (year, pay);
或者你可以尝试使用dense_rank()
SELECT *
FROM (
SELECT year, pay, dense_rank() OVER (PARTITION BY year ORDER BY pay) AS dr
FROM salaries
WHERE salaries.year IN ( 2015 , 2016 )
) AS ms
WHERE dr = 1;