SQL如何显示最高总和

时间:2019-03-06 04:38:34

标签: sql-server

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())之类的条件来显示它们。

enter image description here

这是我的输出。在此图像中,数字为'5'的人的SUMHOUR'150'最高,我想显示它们。我该怎么办?

2 个答案:

答案 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。