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),该怎么办。有没有办法用同样的查询来实现这一点?