0

我有一个表结构

Emp_id  Emp_name    Emp_sal Depat
1       AB          10000   A
2       CB          12000   A
3       DA          7000    B
4       SB          2000    B
5       WE          6000    A
6       CF          10000   B
7       AK          8000    C
8       LM          6000    C

我需要一个结果作为每个出发组的最大 emp_sal 离开 Like

Emp_name Emp_sal 出发
CB 12000 A
CF 10000 B
AK 8000 C

我写了一个查询:

SELECT DISTINCT (emp_sal) , depart from emp 
group by depart
having emp_sal = (select max(emp_sal) from emp group by depart  )

但这没有用。我尝试了其他几个查询,但没有得到想要的结果。

4

3 回答 3

2

回答上述问题:

select max(emp_sal), depart
from emp 
group by depart

但是,我怀疑您想要每个部门的最高薪水的行:

select emp_name, emp_sal, depart
from (select * from emp order by emp_sal desc) x
group by depart

注意:这是一个 mysql-only 解决方案(带有 whacky group by)但问题被标记为 mysql 并且这有效:)

于 2013-04-18T18:58:45.583 回答
0

部门最高工资:

SELECT Depart, MAX(Emp_Sal)
  FROM emp
  GROUP BY Depart

所在部门工资最高的员工名单:

SELECT Depart, Emp_Name, Emp_Sal
FROM Emp
WHERE (Depart, Emp_Sal) IN (
  SELECT Depart, Max(Emp_Sal)
  FROM Emp
  GROUP BY Depart)
于 2013-04-18T19:02:13.623 回答
0

查询 Emp_sal 对于组是否唯一:

SQLFIDDLE示例

SELECT 
t1.Emp_name,
t1.emp_sal,
t1.Depat 
FROM emp t1
WHERE  t1.emp_sal = (SELECT max(t2.emp_sal) 
                    FROM emp t2 
                    WHERE t2.Depat = t1.Depat)

如果每个组不是唯一的:

SELECT 
t1.Emp_name,
t1.emp_sal,
t1.Depat 
FROM emp t1
WHERE  t1.Emp_id = (SELECT t2.Emp_id 
                    FROM emp t2 
                    WHERE t2.Depat = t1.Depat
                    ORDER BY t2.Emp_sal DESC
                    LIMIT 1)

结果:

| EMP_NAME | EMP_SAL | DEPAT |
------------------------------
|       CB |   12000 |     A |
|       CF |   10000 |     B |
|       AK |    8000 |     C |
于 2013-04-19T14:18:38.960 回答