会出现下图这种情况,请假的开始日期和结束日期会存在跨月份,但我想得到每月休假多少天
用一个日期表连接请假表,大致如下
select 日期格式化年月,count(1) as qty
from 日期表 a
join 请假表 b on a.日期 between b.开始日期 and b.结束日期
gorup by 日期格式化年月
百度搜下你数据库对应的日期相减函数就好了。
看我这个是不是和你的很像:
顾问-日期区间人数统计.cpt
我这个是按天统计。
你可以截取年月部分,实现按月统计
你的请假天数也计算假日?
一般的HR系统会做日期分解,就是把请假分到每一天上。
如果您用的是HR系统,可以找一找有没有日期分解的表。
如果没有,最好的办法是做程序数据集,因为sql上做循环判断效率还是比较低
循环判断每一条记录的开始结束日期是否在同一个月,如果是正常计算天数,如果不是就分别跟月末月初做日期天数计算,最终累计出每月天数。
SELECT STARTdate,last_day(STARTdate) FROM TAB_TESTDAY
这只是一种思路