我想显示在特定域中具有最大CTC的员工的姓名。
select Domain, max(CTC) from Employee group by Domain
这将显示该特定域的域和最大CTC。
但如果我使用
select Domain,empname, max(CTC) from Employee group by Domain
然后显示错误很明显 所以,如果我修改它,那就去了它。
select Domain,empname, max(CTC) from Employee group by Domain,empname
输出错误
但是我需要显示员工姓名以及Domain和最大CTC。 任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
select m.Domain, e.empname, m.max_CTC
from Employee e
join (select Domain, max(CTC) max_CTC from Employee group by Domain) m
on e.Domain = m.Domain
and e.CTC = m.max_CTC
以下是SQLFiddle
答案 1 :(得分:0)
试试这个
SELECT E.Domain,E.empname,E.CTC FROM
Employee E JOIN
(select Domain,max(CTC) MaxCTC from Employee group by Domain) T
ON E.Domain = T.Domain AND E.CTC = T.MaxCTC
<强> FIDDLE DEMO 强>
答案 2 :(得分:0)
<强>问题:强>
使用聚合函数时,需要按选择查询中的所有其他列名进行分组。
解决方案:
您必须使用联接。
试试这个:
SELECT E2.Domain,E1.empname,E2.MaxVal as Max
FROM Employee E1 INNER JOIN
(SELECT Domain,MAX(CTC) as MaxVal FROM Employee GROUP BY Domain) E2
ON E1.Domain=E2.Domain
答案 3 :(得分:0)
试试这段代码很简单;
select MAX(Domain),empname, max(CTC) from Employee group by empname