Выберите максимальное значение столбца на основе другого идентификатора столбца

#mysql #sql

#mysql #sql

Вопрос:

Я пытаюсь получить максимальную зарплату за каждый год в таблице с атрибутами TeamID, salary, YearID. Не должно быть сложно, верно? Вот мой запрос:

 SELECT teamID, MAX(tS.teamSalary), yearID
FROM
  (SELECT
      teamID,
      sum(salary) AS teamSalary,
      yearID
    FROM salaries
    GROUP BY teamID, yearID) tS
GROUP BY yearID;
  

Внутренний запрос работает просто отлично, но внешний просто сообщает первый идентификатор команды для каждой группы. Что я делаю не так?

 Inner query output:
A  1  2000
B  1  2000 
C  2  2000
A  2  2001
B  3  2001
A  2  2002
B  2  2002

Full query output: 
A  1  2000
A  2  2001
A  2  2002

Desired output: 
C  2  2000
B  3  2001
A  2  2002
  

Комментарии:

1. Нужен ли вам идентификатор команды в этом, если вы просто делаете для каждого года?

2. Да, это подзапрос для последнего бита, который извлекает название команды из другой таблицы.

3. Можете ли вы привести нам пример вывода, который вы на самом деле хотите получить из запроса

Ответ №1:

Сначала вы получаете максимальную зарплату по годам, затем вы получаете дополнительную информацию:

 SELECT teamID, salary, yearID
  FROM salaries 
  JOIN
    (SELECT MAX(salary) AS maxSalary,
            yearID
       FROM salaries
   GROUP BY yearID) tS
    ON ts.yearID = salaries.yearID
   AND ts.maxSalary = salaries.salary
  

РЕДАКТИРОВАТЬ: Не уверен, хотите ли вы максимальную зарплату за какой-то год, затем к какой команде она принадлежит, или если вы хотите максимальную зарплату по команде и году. Второй вариант здесь:

   SELECT MAX(salary) AS maxSalary, yearID, teamID
    FROM salaries
GROUP BY yearID, teamID
  

Комментарии:

1. Я переключился на поиск максимального значения, а затем с помощью объединения, и это, похоже, сработало. Спасибо за вашу помощь!