當前位置:首頁 » 編程語言 » 連續打卡天數sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

連續打卡天數sql

發布時間: 2022-06-05 11:48:08

1. 請用sql實現查詢出每個員工2019年10月份上班打卡次數,並按打卡次數從大到小排序卡次數從大到小排序

你好,很高興回答你的問題。
因為沒有提供表結構,我就大概描述一下吧。
大致sql結構如下:
select 員工,count(1) from 表名 where 時間條件 group by 員工 order by count(1) desc;
如果有幫助到你,請點擊採納。

2. SQL統計一個月連續出勤6天以上的員工

select 用戶ID
from
(select 用戶ID,count(*) cnt

from 表名
group by 用戶ID
)tbl
where tbl.cnt > 6

3. sql求解:查詢連續七天以上都有打卡的員工記錄

可以利用一下ORACLE的ROWNUM機制來做點文章,因為它是自增的
我假設有這一張表 WORK
ID,上班日期(DA)
1,20080101
1,20080102
1,20080103
2,20080101
2,20080103
3,20080101
也可能是亂序的
第一步:排序
SELECT * FROM WORK ORDER BY ID, DA
第二步:日期-ROWNUM如果相同的話認為他們是連續的,然後GORUP BY一下
SELECT A.*, TO_NUMBER (A.DA - ROWNUM) DAYS
FROM (SELECT * FROM WORK ORDER BY ID, DA) A
第三步:分別求出連續區間,讓他們相減求出大於6的值
SELECT C.ID
(SELECT B.ID, (MAX (B.DA) - MIN (B.DA)) DAYS
FROM (SELECT A.*, TO_NUMBER (A.DA - ROWNUM) DAYS
FROM (SELECT * FROM WORK ORDER BY ID, DA) A) B
GROUP BY B.ID, B.DAYS) C
WHERE C.DAYS > 7

ITPUB一位高人的辦法得到了啟發

4. 用 sqlserver 怎樣查詢出 數據表裡 某月上班連續打卡15天的人

這個功能資料庫用SQL語句是實現不了的,建議把每個月的上班情況讀出來,用編程語言通過編程判斷。你的需求是屬於業務邏輯功能,資料庫實現不了這么復雜的功能。

5. 考勤日報表中(卡號,日期,曠工天數,打卡時間),如何用SQL語句查詢出連續曠工3天的員工

你沒描述得太清楚,不過大概意思明白了,暫定認為你的表裡曠工天數為1表示曠工,你要查看的是2009年9月 可以這樣寫:select distinct 卡號 from 表 t where 曠工天數=1 and year(打卡日期)=2009 and month(打卡日期)=9
and exists(select * from 表 where 卡號=t.卡號 and 曠工天數=1 and 打卡日期=dateadd(d,1,t.打卡日期))
and exists(select * from 表 where 卡號=t.卡號 and 曠工天數=1 and 打卡日期=dateadd(d,2,t.打卡日期)) 返回滿足條件員工的卡號

6. sql統計一個月一共出勤多少天

出勤天數
select * from 考勤表 where (intkqstate<7 and outkqstate<7) and 日期 between '2009-1-1' and '2009-1-31' and 員工ID=" & ID
如果不查某個人的,就不用加員工ID這個條件

未出勤天數:
select * from 考勤表 where (intkqstate>6 and outkqstate>6) and 日期 between '2009-1-1' and '2009-1-31' and 員工ID=" & ID

7. SQL 統計每日上班打卡和下班打卡語句

這是在oracle資料庫下做的,不知道你是什麼資料庫,給你提供一下思路
select
card_no,
attr_date,
to_char(atte_time,'HH24:MI')tim,
doorinout,
rn
from (
select
card_no,
attr_date,
atte_time,
doorinout,
ROW_NUMBER() OVER(PARTITION BY card_no,attr_date,doorinout ORDER BY atte_time asc) rn
from(
select
card_no,
(
case
when doorinout=1
then to_date(to_char(atte_time,'yyyy-MM-dd'),'yyyy-MM-dd')
when (doorinout=0 and to_number(to_char(atte_time,'HH24'))<3)
then (to_date(to_char(atte_time,'yyyy-MM-dd'),'yyyy-MM-dd')-1)
else to_date(to_char(atte_time,'yyyy-MM-dd'),'yyyy-MM-dd')
end

)attr_date,
atte_time,
doorinout
from AtteTime
) tmp order by card_no,atte_time asc,doorinout desc
) where rn < 5

8. 請用sql實現查詢出每個員工2019年10月份上班打卡次數,並按打卡次數排序

這要是在公司里查,一般公司不讓你查這些方面的,除非你和公司的領導關系好。

9. SQL查詢連續多少天有刷卡的記錄

存儲過程/函數/或者程序里算吧
偽碼
list = name,date from t where name=n order by date
ignorlist = array()
result = array()
for(i in list)
{
if(i.date not_in ignorlist )
{
d = i.date;
td.start = td.end = d;
while(td.end+1 in list)
{
td.end++
ignorlist.add(td.end)
}
result.add(td)
}
}