找出每个部门首先雇用的男女

时间:2015-11-24 16:41:23

标签: sql sql-server

我正在尝试编写一个查询,它将返回每个部门的第一个雇佣男性。到目前为止,我已经得到以下信息:

$set:{'a':1,'b':2}

这只是给了我们在他们部门雇用的第一个男人的名字。如果一个女性是第一个被雇用的人,那么它不会为该部门返回结果 - 如何更改查询以返回我想要的所有部门的结果?

2 个答案:

答案 0 :(得分:1)

使用窗口功能:

select e.*
from (select e.*,
             row_number() over (partition by workdept, sex
                                order by hiredate) as seqnum
      from emp
     ) e
where seqnum = 1;

编辑:

如果您希望每个人都在第一天受雇,请使用rank()dense_rank()代替row_number()

答案 1 :(得分:0)

我使用窗口函数..可能是Rank而不是Row_Number ..但你也可以加入子查询。

SELECT
    e.firstname + ' ' + e.lastname AS Name,
    e.hiredate,
    e.workdept
FROM
    emp e
    JOIN (SELECT
            sex,
            workdept,
            MIN(hiredate) hiredate
          FROM
            emp
          GROUP BY
            sex,
            workdept
         ) hire ON e.sex = hire.sex
                   AND e.hiredate = hire.hiredate
                   AND e.workdept = hire.workdept