SQL选择一列中具有最大值的行

SQL选择一列中具有最大值的行,sql,sql-server,Sql,Sql Server,我有以下疑问 SELECT Dnumber, SUM(WORKS_ON.Hours) AS sum_hours FROM DEPARTMENT JOIN PROJECT ON DEPARTMENT.Dnumber = PROJECT.Dnum JOIN WORKS_ON ON PROJECT.Pnumber = WORKS_ON.Pno GROUP BY Dnumber 结果: Dnumber sum_hours -------------------- 1 2

我有以下疑问

SELECT Dnumber, SUM(WORKS_ON.Hours) AS sum_hours 
FROM DEPARTMENT 
JOIN PROJECT ON DEPARTMENT.Dnumber = PROJECT.Dnum 
JOIN WORKS_ON ON PROJECT.Pnumber = WORKS_ON.Pno 
GROUP BY Dnumber
结果:

Dnumber   sum_hours
--------------------
1           25.0
4          115.0
5          150.0
我想选择最大
总小时数
的行。我试着用

SELECT s.Dnumber, MAX(s.sum_hours)
FROM 
    (SELECT Dnumber, SUM(WORKS_ON.Hours) sum_hours 
     FROM DEPARTMENT 
     JOIN PROJECT ON DEPARTMENT.Dnumber = PROJECT.Dnum 
     JOIN WORKS_ON ON PROJECT.Pnumber = WORKS_ON.Pno 
     GROUP BY Dnumber) s 
GROUP BY s.Dnumber
但这会返回完全相同的结果(所有三行)

你知道我怎样才能做到这一点吗?

试试这个

SELECT TOP 1 Dnumber, SUM(WORKS_ON.Hours) sum_hours 
FROM DEPARTMENT 
JOIN PROJECT ON DEPARTMENT.Dnumber = PROJECT.Dnum 
JOIN WORKS_ON ON PROJECT.Pnumber = WORKS_ON.Pno GROUP BY Dnumber
ORDER BY SUM(WORKS_ON.Hours) DESC

如果我想在结果中添加另一列(例如Pno),该怎么办。有没有办法用同样的查询来实现这一点?