2015-11-02 152 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 

您可能需要根据您的要求的条款来更改顺序。