Возвращает max с использованием postgresql, но возвращает более одного значения, если есть связи для max - PullRequest
0 голосов
/ 08 сентября 2018

Проблема с кодом ниже состоит в том, что если есть две верхние зарплаты, все равно будет возвращаться только одно значение за каждый год. Я хочу, чтобы, если есть несколько игроков, привязанных к максимуму, верните их всех. Использование TOP не работает в postgresql ...

SELECT MAX(salaries.pay)
FROM salaries
WHERE salaries.year = 2015 
  OR salaries.year = 2016
GROUP BY salaries.year
LIMIT 1;

1 Ответ

0 голосов
/ 08 сентября 2018

Затем присоедините таблицу обратно к 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...