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

标签 sql sql-server-2008 max

我无法让它工作。 我需要先找到休假和病假总小时数的最大值,然后找出哪些员工的休假和病假总小时数具有此值。我可以获得 168 个最大值,但无论我如何安排事情我似乎无法获得符合此标准的员工 - 我只是获得所有员工的完整列表。下面的代码是最后一次尝试,基于类(class)方向。谢谢!

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

最佳答案

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;

关于SQL查找最大值然后找到其出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10145433/

相关文章:

mysql - 如何在 MySQL 5.0.45 中创建具有多个操作的触发器?

c# - 如何通过参数化查询在数据库中插入空值

sql - 识别整个数据库中复合 PK 中包含的所有列

sql - 基本sql : Outputting headers surrounded by double quotes

c++ - std::max 在统一初始化和 constexpr int 下表现出乎意料

mysql - 选择其中 id == value 且 id != value mysql

sql - Oracle 11G 中的 INSERT SELECT 语句

sql - SQL 中两个日期之间的确切小时数差异

php - 使用 Where 子句在数据库列中查找最大值

WPF 不需要的网格分割器行为