使用postgresql返回max,但如果有最大关系,则返回多个值

问题描述 投票:1回答:1

下面代码的问题是,如果有两个最高工资,每年仍然只返回一个值。我想要它,以便如果有多个玩家并列最大值,则返回所有玩家。使用TOP在postgresql中不起作用...

SELECT MAX(salaries.pay)
FROM salaries
WHERE salaries.year = 2015 
  OR salaries.year = 2016
GROUP BY salaries.year
LIMIT 1;
postgresql
1个回答
0
投票

然后加入桌子回到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;
© www.soinside.com 2019 - 2024. All rights reserved.