SQL查找最大值然后查找其出现

Vol*_*vox 2 sql max sql-server-2008

我不能让这个工作.我需要先找到假期和病假的最大总和,然后找出哪些员工的假期和病假时间总和.我可以获得168最大值,但不管我如何安排事情,我似乎无法获得符合此标准的员工 - 我只是获得所有员工的完整列表.以下代码是基于班级指导的最后一次尝试.谢谢!

SELECT e.employeeID, SUM(e.vacationhours + e.sickleavehours) AS maxHours
    FROM   humanresources.employee e 
    WHERE  EXISTS (
                   SELECT SUM(e.vacationhours + e.sickleavehours) AS totalhours 
                   FROM   humanresources.employee e) 
    GROUP  BY e.employeeID
Run Code Online (Sandbox Code Playgroud)

Mic*_*son 7

TOP WITH TIES 简化了这个问题......

如果您只想要一个拥有最大总数的员工列表...您只需按总和排序,然后选择前1,包括任何关系,以便它返回具有最大值的所有员工:

SELECT TOP 1 WITH TIES
    e.employeeID,
    SUM(e.vacationhours + e.sickleavehours) AS totalHours
FROM humanresources.employee e 
GROUP BY e.employeeID
ORDER BY totalHours DESC;
Run Code Online (Sandbox Code Playgroud)

  • 创意优雅; 但可能不是教师期待的.总结一下Volvox在这里做了些什么:迈克尔总结所有员工总计小时订购结果,以便那些时间最多的人首先出现,然后只返回第一个结果,包括领带. (2认同)