2016-10-18 62 views
0

我想要在具有属性teamID,salary,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 

编辑:不知道,如果你想要一些当年最高的薪水,那么它所属的团队,或如果你想要团队和年份的最高工资。第二个选项在这里:

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

我切换到查找最大优先,然后使用连接,似乎已经奏效。感谢您的帮助! – Wenzel745

相关问题