美文网首页
MSSQL 處理連續出勤天數

MSSQL 處理連續出勤天數

作者: dlj_li | 来源:发表于2020-09-17 09:39 被阅读0次

Empno(工號),attdate(出勤日期),OnTime(打卡時間),ShiftTime(排班時間),rank(打卡時間排序),第一步:先獲取用戶在一段時間的打卡排名,結果如下:

select empno,attdate,OnTime,ShiftTime,row_number() over(partition by empno order by OnTime) rank

from

FactAllatthrs

where ontime is not null and ShiftTime is not null

1

第二步:

獲取每個打卡日期中的日與rank之間的差:

select t.empno,t.OnTime,rank,day(t.OnTime) days,day(t.OnTime)-t.rank as day_cha

from (

select empno,attdate,OnTime,row_number() over(partition by empno order by OnTime) rank

from

FactAllatthrs

where  ontime is not null and ShiftTime is not null)t

2

看上面的結果表,發現,連續打卡日期的day_cha 都是相等的,這樣獲取連續打卡的天數就容易了。连续打卡天数是截止目前最近的一个 连续打卡天数还是历史坚持最长的打卡天数

所有的打開天數:

select empno, month,

count(day_cha) days

from

(select t.empno,t.attdate,left(t.attdate,6) as month ,t.OnTime,Month(t.ShiftTime) mm ,t.rank,day(t.OnTime)-t.rank as day_cha

from (

select empno,attdate,OnTime,ShiftTime,row_number() over(partition by empno order by OnTime) rank

from

FactAllatthrs

where ontime is not null and ShiftTime is not null)t

) t2 group by empno,day_cha,month

由此可見此用戶最近的連續出勤是15天,而歷史上最長的連續出勤也為15天

綜上所得:要獲取最近的連續打卡天數,就把day_cha 中的最大值對應的days取出來;如果要獲取歷史上最的,只要把最大的days取出來就OK了

附:直接算最近的連續出勤

select max(A.ShiftTime) ontime, datediff(day,max(A.ShiftTime),getdate()) as days ,A.empno from FactAllatthrs A,FactDLeave B

where A.ontime is  null and A.ShiftTime is not null  and B.Udate=convert(nvarchar(11),getdate()-1,112) and B.Emplid=A.empno  group by A.empno

相关文章

  • MSSQL 處理連續出勤天數

    Empno(工號),attdate(出勤日期),OnTime(打卡時間),ShiftTime(排班時間),rank...

  • MSSQL 連續出勤(二)

    接著上次的,那個查詢最近連續出勤天數:取最大的day_cha select a.* from (select t...

  • 連續自然數之和的秘密(2)

    續上文。上文得出了這樣一些結論。 大於2的任意奇數均可寫成兩個連續自然數之和的形式,偶數則不可以。 可被奇數m整除...

  • 連續自然數之和的秘密(1)

    《編》書2.21題。 4 + 5 = 92 + 3 + 4 = 9 有些數比如 4 和 8 不能分拆寫成連續自然數...

  • [監督式]NLP基礎-RNN、LSTM

    RNN RNN常用來處理序列數據,例如我們有10年每月的天氣紀錄要來預測作物收成,我們必須要知道是否有持續好幾天的...

  • 連續

    正在熱播的宮廷劇一共有七十多集一路演下來越演越不像话了勾心鬥角爾虞我詐血案連連 再這麼發展下去這世界還能好麼 為避...

  • SQL语句中日期的计算方法大全

    sql语句中的日期处理 一.日期處理函數 1.日期增減函數dateadd(datepart,number,dtae...

  • 無題

    轉身 繁華之後的落寞 可有一處是因我 細數流連 曾認為那比生命還重要的東西 而今 卻無處尋覓 那執手說好的不...

  • 『書法文札』| 一碟淺墨化濃情 —— 『情迷鄧麗君』摄影記事 (

    情 · 迷 …… 最近,連續更新了多篇 [連載] 『情迷鄧麗君 _淡淡幽情』,這也是自己在簡書連續更新最給力的一個...

  • 如此仙境

    最喜雨後山裡天 煙霧和天連成片 煙霧和天難分清 如同身處仙境處

网友评论

      本文标题:MSSQL 處理連續出勤天數

      本文链接:https://www.haomeiwen.com/subject/mdzkyktx.html