2016-10-18 3 views
0

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

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

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

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 
+0

Нужно ли вам TeamID в этом случае, если вы только что делаете за каждый год? –

+0

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

+0

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

ответ

1

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

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 

EDIT: Не уверен, что если вы хотите максимальную зарплату какой-то год, то к какой команде он принадлежит, или если вы хотите получить максимальную зарплату командой и годом. Второй вариант здесь:

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

Я переключился на поиск max сначала, а затем с помощью соединения, и это, похоже, сработало. Спасибо за помощь! – Wenzel745

Смежные вопросы