【问题标题】:SELECT MAX() FROM TABLE using GROUP BY使用 GROUP BY 从表中选择 MAX()
【发布时间】:2015-11-11 12:03:14
【问题描述】:

我有一些桌子:

name    dep_id  salary
Vasia   5       1000
Oleg    5       1300
Vitia   4       1000
Sacha   3       1100
Kolia   5       1600
Lesha   2       1400
Sergey  4       1200
Marina  5       1300
Olga    5       1500
Igor    4       1400
Valia   3       1500
Erema   4       1500

我需要获取他部门中salary 最多的员工的name

即我需要

 Lesha   1400
 Valia   1500
 Erema   1500
 Kolia   1600

我试过了:

SELECT name, max(salary) FROM employees GROUP BY dep_id

但这显示不正确的值

我该怎么做?

【问题讨论】:

    标签: mysql select group-by having


    【解决方案1】:
    select e1.*
    from employees e1
    join
    (
      SELECT dep_id, max(salary) as msal
      FROM employees
      GROUP BY dep_id
    ) e2 on e1.dep_id = e2.dep_id
        and e1.salary = e2.msal
    

    【讨论】:

      【解决方案2】:
      select t1.name,t2.sallary
      from Employees t1 join
           (select dep_id,MAX(Sallary) as Sallary
            from Employees
            group by dep_id) t2 on t1.dep_id=t2.dep_id and t1.sallary=t2.sallary
      order by t2.sallary
      

      结果:

      name    Sallary
      ---------------
      Lesha   1400
      Valia   1500
      Erema   1500
      Kolia   1600
      

      SQL Fiddle中的演示

      【讨论】:

        【解决方案3】:

        尝试下面的查询以获得所需的输出:

            select name,sallary from employees t1 where (dep_id,sallary) in
            (select dep_id,max(sallary) from employees group by dep_id);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-02
          • 2011-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          相关资源
          最近更新 更多