2015-11-02 153 views
0

我有一個查詢象下面這樣:SQL選擇最大值

Select Lname, MAX(HOURS)  
From (Select E.LName, SUM(Hours) as HOURS  
From WORKS_ON W  
    JOin EMPLOYEE E on E.SSN=W.ESSN  
Group by E.SSN) as hours 

答案是這樣的:

Lname MAX(HOURS) 

Black 55 

從DB 55是最大小時正確的答案。但布萊克不工作55小時,這是另一名叫格蘭特的人。似乎我有一個不相互關聯的答案。我應該怎麼做才能得到如下結果:

「Grant 55」作爲答案。

+0

也許,你可以解釋我在做什麼錯? –

+0

請添加有關您的表格的信息... – davejal

+0

請提供一些示例數據或創建一個小提琴 – Wanderer

回答

1
Select E.LName, SUM(Hours) as HOURS  
From WORKS_ON W  
    JOin EMPLOYEE E on E.SSN=W.ESSN  
group by E.LName 
ORDER BY HOURS desc 
limit 1 
+0

我已得到一個結果:黑色604,我認爲我需要將代碼添加到您的代碼 –

+0

@NurdauletKenges,是的,當然一個GROUP BY是必需的...我編輯過。 – jarlh

0

我假設不同LName的,SSN在E表

Select 
    E.LName 
    ,SUM(Hours) as HOURS  
From 
    WORKS_ON W  
    JOin EMPLOYEE E on E.SSN=W.ESSN 
GROUP BY 
    E.SSN 
    ,E.LName 
ORDER BY 
    E.LName 

您可能需要根據您的要求的條款來更改順序。