我已经有了得到日班的查询,但是我在夜班时遇到了一个问题,就是这个查询。
SELECT user_id,
Min(verify_date) as First_IN,
Max(verify_date) as Last_Out
from tbl_attendance group by user_id,verify_date但是这个查询不允许夜班,所以我尝试了另一个查询,即:
SELECT user_id,verify_date,
Lead(verify_date,-1) OVER(PARTITION BY user_id order by verify_date desc)
from tbl_attendance这个查询给出了过去的出勤率,但我不知道如何摆脱我的生物特征(或生物特征中的双击)的额外考勤--生物特征被用作门,所以我需要先进进出出。
而且,我的SQL也有问题,日期时间可能坏了,它总是给我这个输出2019-10-17T07:55:00Z。看这个数据库填充
期望产出:
User_id in_time out_time
71 17/10/2019 7:55 null
13 16/10/2019 18:44 17/10/2019 7:05
8 16/10/2019 19:47 17/10/2019 7:05
70 16/10/2019 18:25 17/10/2019 7:01
31 16/10/2019 19:02 17/10/2019 6:34
66 17/10/2019 6:19 null
64 16/10/2019 11:49 16/10/2019 22:05
36 16/10/2019 7:42 16/10/2019 19:03
34 16/10/2019 6:26 16/10/2019 19:03
79 16/10/2019 9:25 16/10/2019 19:02
76 16/10/2019 7:02 16/10/2019 19:02
13 16/10/2019 7:05 16/10/2019 18:44
71 16/10/2019 7:02 null发布于 2019-10-28 06:10:01
供日班使用
SELECT DISTINCT
user_id,
DATE(verify_date) the_date,
MIN(verify_date) OVER (PARTITION BY user_id, DATE(verify_date)) min_datetime,
MAX(verify_date) OVER (PARTITION BY user_id, DATE(verify_date)) max_datetime
FROM tbl_attendance
ORDER BY user_id, the_date;夜班使用
WITH cte AS (SELECT user_id,
verify_date,
LEAD(verify_date) OVER (PARTITION BY user_id ORDER BY verify_date) lead_date
FROM tbl_attendance)
SELECT *
FROM cte
WHERE DATE(verify_date) != DATE(lead_date)
ORDER BY user_id, verify_date;https://dba.stackexchange.com/questions/252041
复制相似问题