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 子句中的子查询会导致巨大的性能损失。