我有这样的用户出勤时钟数据。
id | userID | created_at
1 | 1 | 2018-06-27 00:15:00
2 | 1 | 2018-06-27 01:43:55
3 | 1 | 2018-06-27 02:43:55
4 | 2 | 2018-06-27 00:15:00
5 | 2 | 2018-06-27 02:43:55
6 | 2 | 2018-06-27 03:43:55
7 | 1 | 2018-06-28 00:55:00
8 | 1 | 2018-06-28 01:43:55
9 | 1 | 2018-06-28 02:43:55
10 | 2 | 2018-06-28 00:00:00
11 | 2 | 2018-06-28 02:43:55
12 | 2 | 2018-06-28 03:43:55
我想要一个用户迟到打卡的日期列表。 假设公司工作时间为 00:00:00 并且 我怎样才能得到这样的结果:
id | userID | created_at
1 | 1 | 2018-06-27 00:15:00
4 | 2 | 2018-06-27 00:15:00
7 | 1 | 2018-06-28 00:55:00
感谢你们的帮助。谢谢🙏🏻
最佳答案
您可以尝试按用户和日期进行有条件聚合,然后检查是否发生(或未发生)精确的午夜时钟:
SELECT
userID,
MIN(created_at) AS created_at
FROM yourTable
GROUP BY
userID,
DATE(created_at)
HAVING
SUM(CASE WHEN DATE_FORMAT(created_at, '%H:%i:%s') = '00:00:00' THEN 1 ELSE 0 END) = 0;
Demo
关于mysql - 获取每天的第一条记录,然后仅检查状况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489316/