我有这样的用户出席率CLOCK IN数据。
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
感谢您的任何帮助。谢谢
答案 0 :(得分:1)
您可以尝试按用户和日期有条件地进行汇总,然后检查是否有确切的午夜时钟发生(或没有发生):
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;