我有一个表格结构
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离开 喜欢
Emp_name Emp_sal Depart 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 )
但是这没用。我尝试了几个其他查询,但没有得到所需的结果。
答案 0 :(得分: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的解决方案(使用whacky group by),但问题是标记为mysql,这有效:)
答案 1 :(得分: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)
答案 2 :(得分:0)
查询Emp_sal对于组是否唯一:
<强> SQLFIDDLEExample 强>
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 |