SELECT EMPLOYEE.Fname,EMPLOYEE.Lname,
D.Dnumber,
SUM(WORKS_ON.HOURS) AS SUMHOUR
FROM PROJECT
INNER JOIN DEPARTMENT D ON D.Dnumber = PROJECT.Dnum
INNER JOIN EMPLOYEE ON PROJECT.Dnum= EMPLOYEE.Dno
INNER JOIN WORKS_ON ON WORKS_ON.Pno = PROJECT.Pnumber
GROUP BY EMPLOYEE.Fname,EMPLOYEE.Lname, D.Dnumber
我正在编写一个列出SUMHOUR最高的人员的代码。 现在,我发现谁拥有最大的总和,但是我无法设置诸如max(sum())之类的条件来显示它们。
这是我的输出。在此图像中,数字为'5'的人的SUMHOUR'150'最高,我想显示它们。我该怎么办?
答案 0 :(得分:2)
一种简单的方法使用TOP
:
SELECT TOP 1 WITH TIES
e.Fname,
e.Lname,
d.Dnumber,
SUM(w.HOURS) AS SUMHOUR
FROM PROJECT p
INNER JOIN DEPARTMENT d
ON d.Dnumber = p.Dnum
INNER JOIN EMPLOYEE e
ON p.Dnum = e.Dno
INNER JOIN WORKS_ON w
ON w.Pno = p.Pnumber
GROUP BY
e.Fname,
e.Lname,
d.Dnumber
ORDER BY
SUMHOUR DESC;
答案 1 :(得分:0)
您已将Dnumber分组,因此它在每个Dnumber中返回最高SUMHOUR。
因此,只是将Dnumber从组中删除,然后仅返回最高SUMHOUR。