2014-04-21 56 views
-1

我想顯示在特定域中具有最大CTC的員工的名稱。通過拋出錯誤的SQL組

select Domain, max(CTC) from Employee group by Domain 

這將顯示該特定域的域和最大CTC。

,但如果我用

select Domain,empname, max(CTC) from Employee group by Domain 

那麼它顯示的錯誤是顯而易見的 所以要coorect它,如果我修改

select Domain,empname, max(CTC) from Employee group by Domain,empname 

這給了錯誤的輸出

但我需要顯示員工姓名以及域名和最大CTC。 任何幫助將不勝感激。

+0

一個域是否有多個員工?例如,如果一個域有5名員工,則所需的輸出是5行,其中包含每個員工的名稱,域和MAX(CTC)? – Guneli

+0

一個域包含超過1名員工。並且您的示例的期望輸出將爲1個或更多行,其中包含具有max CTC的員工 – Abhisek

回答

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

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

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 
0

只是嘗試此代碼,這是簡單的;

select MAX(Domain),empname, max(CTC) from Employee group by empname