在员工出勤登记中找到连续缺席者

时间:2013-05-07 04:16:30

标签: sql sql-server-2008 tsql

出勤登记册包含以下栏目:

ID          Numeric Auto Increment  
Employee    ID Int  
Attendance  Bit

我需要找到

  1. 有多少员工连续离开'n'天或更长时间。
  2. 在一个工作日之前和之后准确地休息n天。例如:工作日前两天和工作日后两天
    其中'n'是输入参数。
  3. enter image description here

    到目前为止,我已经完成了简单的查询。但寻找持续出现的价值对我来说是新鲜事。一些人可以帮助从哪里开始..

1 个答案:

答案 0 :(得分:1)

我不知道如何在查询中编写它,但算法类似于:

为每位员工创建一个absense列表,格式如下: [1,3,2,2]其中每个元素表示连续工作日后连续缺勤天数。在这种情况下,

[False, True, True, False, False, False, True, True, False, False, True, False, False]
 <-1--> Work days   <---------3------->  Work days   <----2----->  Work  <----2----->

现在可以通过在数组中找到&gt; = n

的数字来实现要求(1)

可以通过在数组中找到值为n的两个连续数字来检查要求(2)。 (此解决方案不正确,也应存储工作日数,可能存在于相同长度的数组中,但我将此留给用户)。