如何使用 SQL MAX(SUM()) 函数

abd*_*344 3 sql sqlplus sum max

我需要一些帮助来使用 SQLmax和SQL 中的sum聚合函数。

我想显示在项目上投入的总小时数最多的员工的名字和姓氏。我想列出项目总时数最高的员工。

我有两个表:

employee: 
FNAMEM--LNAME--SSN--BDATE--ADDRESS--SALARY--SUPERSSN--DNO

works_on:
ESSN--PROJECT_NUM--HOURS
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我所拥有的,但代码中有语法错误:

select fname, lname, max(sum(hours)) "Total Hours", essn
from employee, works_on
where essn = ssn
order by lname;
Run Code Online (Sandbox Code Playgroud)

我知道这max(sum(hours))行不通,什么会给我正确的结果?

PM *_*7-1 15

如果要使用聚合函数,则需要使用 group by sum

像这样的东西;

SELECT s.fname, s.lname 
FROM (SELECT fname, lname, SUM(w.hours) SumHours, w.project_num 
      FROM Emplyee e 
      JOIN Works_on w ON  w.essn = e.ssn 
      GROUP BY e.fname, e.lname, w.project_num) s
WHERE s.SumHours = (SELECT MAX(w.hours) MaxSum
                    FROM Works_on w1 
                    WHERE  w1.project_num = s.project_num)
Run Code Online (Sandbox Code Playgroud)

请注意,嵌入在 where 子句中的子查询会导致巨大的性能损失。