I have the following query
x
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
RESULT:
Dnumber sum_hours
--------------------
1 25.0
4 115.0
5 150.0
I want to select the row with the MAX sum_hours
. I tried using
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
But this returns the exact same result (all three rows).
Any idea how I can achieve this?
Advertisement
Answer
try this
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