双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

[SQL难题:计算连续5天以上的日期]

雷肿么了 雷肿么了 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

SQL 问题:
有张请假表A(工号,日期),假日表B(日期,节日名称)
请假N天,就有N条数据但不包含表B节假日的日期,礼拜天(可能有,也可能没有)
怎么计算表A中连续请假5天以上的员工,还包含跨月的情况。
//例如: 周四,周五,周六,周日,下周一 属于连续5天的数据
//例如: 周三,周四,周五,周六,下周一 这种也属于连续5天的数据


--下面例出表A所有情况:
--例1 (当月连续请假6天以上):
卡号 日期
213380 2011-05-05 00:00:00
213380 2011-05-06 00:00:00
213380 2011-05-07 00:00:00
213380 2011-05-08 00:00:00 --有时可能也会有星期天的日期
213380 2011-05-09 00:00:00
213380 2011-05-10 00:00:00


--例2 (当月连续请假5天,2011-04-10 属于星期天):
卡号 日期
201105 2011-04-08 00:00:00
201105 2011-04-09 00:00:00
201105 2011-04-11 00:00:00
201105 2011-04-12 00:00:00
201105 2011-04-13 00:00:00

--例3 (当月连续请假4天,):
卡号 日期
201166 2011-04-08 00:00:00
201166 2011-04-09 00:00:00
201166 2011-04-11 00:00:00
201166 2011-04-12 00:00:00

--例4 (跨月连续请假4天,假日表B中,5月1,5月2,5月3属于假日):
卡号 日期
201177 2011-04-29 00:00:00
201177 2011-04-30 00:00:00
201177 2011-05-04 00:00:00
201177 2011-04-05 00:00:00

--例5 (跨月连续请假5天,假日表B中,5月1,5月2,5月3属于假日):
卡号 日期
201177 2011-04-29 00:00:00
201177 2011-04-30 00:00:00
201177 2011-05-04 00:00:00
201177 2011-05-05 00:00:00
201177 2011-05-06 00:00:00


--表B 数据
日期 节日名称
2011-04-05 00:00:00 清明节
2011-05-01 00:00:00 劳动节
2011-05-02 00:00:00 劳动节
2011-05-03 00:00:00 劳动节


...全文

相关推荐

SQL维度补齐技术实战:3种高效方法解析,根治时间断层难题

“在用户分层运营中,快速识别高价值用户是核心命题“。 如何精准找到用户首次在30天内消费破万的‘黄金日期’?看似简单的滚动求和,却因时间断层、数据稀疏等问题,成为困扰数据分析师的高频难题。本文从真实案例出发,深入拆解3种方法的底层逻辑与性能差异,助你彻底攻克时间窗口计算陷阱。”

莫叫石榴姐

sqlserver/mysql按天、按小时、按分钟统计连续时间段数据【推荐】

最近小编接到这样的需求,公司需要按天,按小时查看数据,可以直观的看到时间段的数据峰值。这篇文章主要介绍了sqlserver/mysql按天,按小时,按分钟统计连续时间段数据 ,需要的朋友可以参考下

weixin_38707862

SQL Server各种日期计算方法(收藏)

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文 章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。    在使用本文中的例子之前,你必须注意以下的问题。大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统使用哪一天作为一周的第一天。所有以下的例 子都是以

weixin_38628920

mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

主要介绍了mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句,一般在一些统计报表中比较常用这个时间段,需要的朋友可以参考下

weixin_38681082

mysql如何查询两个日期之间最大的连续登录天数

在现在的很多网站中都有这样一个功能。记录用户的连续登陆天数,所谓的连续在线是指相邻两天都登录过,不一定一直在线,但是只要有过登录即可。这篇文章主要介绍的是利用sql语句如何查询在两个日期之间最大的连续登录天数,有需要的朋友们下面来一起看看吧。

weixin_38669091
评论 19
收藏 已收藏
分享
返回顶部
雷肿么了
MS-SQL Server 34,876 成员 254,635 内容