【问题标题】:Select max of a column based on another column ID根据另一列 ID 选择列的最大值
【发布时间】:2016-10-18 19:18:28
【问题描述】:

我试图在具有属性 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;

内部查询工作正常,但外部查询只是报告每个组的第一个 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

【问题讨论】:

  • 如果你只是每年做一次,你需要TeamID吗?
  • 是的,这是最后一位的子查询,它将从另一个表中检索团队名称。
  • 你能给我们一个你实际上想要从查询中输出的例子

标签: mysql sql


【解决方案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

【讨论】:

  • 我切换到先找到最大值,然后使用连接,这似乎奏效了。感谢您的帮助!
猜你喜欢
  • 2012-05-29
  • 2014-10-05
  • 2021-05-25
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2013-11-09
相关资源
最近更新 更多