一年中有过三次连续请假大于两天的员工

l  问题

如下是某企业2009年内的员工请假记录表,员工每次请假的起始日期和结束日期都会记录在内。

 

下表是员工的详细信息表:

 

请找出这一年中有过连续3次请假大于2天的员工。

 

l  思路

 

大致思路:首先要将请假表中每一条记录的请假时间计算出来,然后利用序列的坐标平移,来寻找附近3条记录请假时间都大于2天的情况。

1.  将请假表按员工分组,同时生成新序表,包括请假天数字段,将员工每次请假的天数都算出来并组成序列存放于字段中。

2.  select函数循环表进行筛选,找出天数字段中有过连续3次请假大于2天的记录。

3.  使用雇员表,提取出前面选出的记录的员工姓名,以方便查看。

l  代码

 

A

 

1

=file("C:\\txt\\LeaveRecords.txt").import@t()

请假记录表

2

=file("C:\\txt\\Employees.txt").import@t()

雇员表

3

=A1.group(Employee;~.( interval(StartDate,EndDate)):Length)

将请假表按员工分组,算出每次请假的天数

4

=A3.select(Length.count(#>2 && ~>2 && Length(#-1)>2 && Length(#-2)>2)>0)

曾有连续3次请假超过2天的记录

5

=A2.keys(ID)

 

6

=A4.(A2.find(Employee)).(Name)

将员工序号换成姓名

 

l  结果