sql - 查找超过指定天数的任何人的最大连续缺勤天数
问题描述
我正在编写缺勤报告,并且很难弄清楚如何获得员工连续缺勤 6 次或更多时的连续休假天数。我能够获得员工的最大人数,但如果员工在给定的开始和结束日期参数内发生了不止一个这种情况,那么这个最大缺勤次数只会给我最多的缺勤次数。以下数据集显示了我的意思:
ClientID EmplID Date AbsentFlag NumOfDays RowNum
10 2587 2019-07-14 Y 1 4
10 2587 2019-07-15 Y 2 5
10 2587 2019-07-16 Y 3 6
10 2587 2019-07-19 Y 4 7
10 2587 2019-07-20 Y 5 8
10 2587 2019-07-21 Y 6 9
10 2587 2019-07-22 Y 7 10
10 2587 2019-07-23 Y 8 11
10 2587 2019-07-26 Y 9 12
10 2587 2019-07-27 Y 10 13
10 2587 2019-07-28 Y 11 14
10 2587 2019-07-29 Y 12 15
10 2587 2019-07-30 Y 13 16
10 2587 2019-08-03 Y 1 17
10 2587 2019-08-04 Y 2 18
10 2587 2019-08-05 Y 3 19
10 2587 2019-08-06 Y 4 20
10 2587 2019-08-09 Y 5 21
10 2587 2019-08-10 Y 6 22
10 2587 2019-08-11 Y 7 23
10 2587 2019-08-12 Y 8 24
10 2587 2019-08-13 Y 9 25
例如,该员工连续缺勤 13 天(超过 6 天),以及连续缺勤 9 天(超过 6 天)。在我的报告中,我需要包括前 6 个缺勤日期,以及每次连续缺勤的总人数。所以对于结果,我希望这样:
ClientID EmplID Days Date1 Date2 Date3 Date4 Date5 Date6
10 2587 13 2019-07-14 2019-07-15 2019-07-16 2019-07-19 2019-07-20 2019-07-21
10 2587 9 2019-08-03 2019-08-04 2019-08-05 2019-08-06 2019-08-09 2019-08-10
目前,我得到这个:
ClientID EmplID Days Date1 Date2 Date3 Date4 Date5 Date6
10 2587 13 2019-07-14 2019-07-15 2019-07-16 2019-07-19 2019-07-20 2019-07-21
10 2587 13 2019-08-03 2019-08-04 2019-08-05 2019-08-06 2019-08-09 2019-08-10
让我知道我是否可以提供其他任何东西来帮助解决这个问题。谢谢。
解决方案
您可以使用与 不同的序列来识别缺勤的第一天numofdays
。然后聚合和过滤:
select clientid, empid, max(days),
max(case when numofdays = 1 then date end) as day_1,
max(case when numofdays = 2 then date end) as day_2,
max(case when numofdays = 3 then date end) as day_3,
max(case when numofdays = 4 then date end) as day_4,
max(case when numofdays = 5 then date end) as day_5,
max(case when numofdays = 6 then date end) as day_6
from (select t.*,
row_number() over (partition by clientid, empid order by date) as seqnum
from t
) t
group by clientid, empid, (seqnum - numofdays)
having max(numofdays) >= 6
推荐阅读
- c# - asp.net web api 2:如何为各种参数设置各种 Http Server 设置,如`Keep-alive timeout`、`Request line size`等
- ios - 导入已编译的 Objective-C 框架 Swift 包管理器
- snowflake-cloud-data-platform - 需要特定于程序的元数据
- visual-studio - Windows 窗体未显示修改后的更改
- python - 如何将 URL 重定向到某个 URL Django Regex
- tensorflow - 如何设计具有多个相关输出的神经网络?
- facebook-messenger - FB Messenger DELETE 持久菜单请求不起作用
- azure-ad-b2c-custom-policy - 使用 github 操作部署 B2C_1A_TRUSTFRAMEWORKBASE 时遇到问题
- java - 如何使用 maven-jar-plugin 从自定义 jar 文件中排除 META-INF 文件夹
- java - 使用 Java 中的 Graphics2D.drawImage 在 Canvas 上绘制后,透明的 PNG 图像会改变颜色