每个人每天在公司都会有很多打卡记录,已知某天的打卡记录如下,现要求查询出当天每个人的考勤记录即最早和最晚打卡记录。
首先创建出表和数据。
#建库
CREATE DATABASE test charset utf8mb4 collate utf8mb4_0900_as_cs;
#建表
DROP TABLE IF EXISTS clock_record;
CREATE TABLE clock_record (
id INT PRIMARY KEY AUTO_INCREMENT comment '主键',
employee_id INT(8) default 0 comment '工号',
name VARCHAR(16) default '' comment '姓名',
check_date DATETIME default now() comment '打卡日期时间'
) engine=innodb CHARSET=utf8mb4 collate utf8mb4_0900_as_cs comment '员工打卡考勤表';
#插入数据
INSERT INTO clock_record (employee_id, name, check_date)
VALUES
(10000001, '小明', '2024-06-05 09:00:01'),
(10000001, '小明', '2024-06-05 11:47:31'),
(10000001, '小明', '2024-06-05 14:57:11'),
(10000001, '小明', '2024-06-05 15:37:21'),
(10000001, '小明', '2024-06-05 18:05:07'),
(10000002, '张三', '2024-06-05 09:02:07'),
(10000002, '张三', '2024-06-05 12:15:06'),
(10000002, '张三', '2024-06-05 16:05:07'),
(10000002, '张三', '2024-06-05 17:25:37'),
(10000002, '张三', '2024-06-05 18:08:17'),
(10000003, '李四', '2024-06-05 09:01:20'),
(10000003, '李四', '2024-06-05 12:01:27'),
(10000003, '李四', '2024-06-05 14:00:05'),
(10000003, '李四', '2024-06-05 17:12:36'),
(10000003, '李四', '2024-06-05 18:02:23');
这道题主要考察min、max和group by的使用语法,可以用下面的语句查询出想要的结果。
select name,min(check_date),max(check_date) from clock_record group by name;
展开阅读全文