简单的员工打卡日志表的建表语句以及对应的测试数据。为了简单明了,我们将使用一个包含以下字段的表:
列名 | 数据类型 | 描述 |
id | INT | 记录的唯一标识符 |
name | VARCHAR(50) | 员工姓名 |
department | VARCHAR(50) | 员工所在的部门 |
log_date | DATE | 打卡日期 |
time_in | TIME | 打卡时间(上班) |
time_out | TIME | 打卡时间(下班) |
建表语句
CREATE TABLE Employee_Attendance_Log ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50), log_date DATE, time_in TIME, time_out TIME );
运行效果:
测试信息
INSERT INTO Employee_Attendance_Log (name, department, log_date, time_in, time_out) VALUES ('张三', '销售部', '2023-07-01', '09:00', '18:00'), ('李四', '市场部', '2023-02', '09:30', '17:30'), ('王五', '人力资源部', '2023-07-03', '11:00', NULL), ('赵六', '技术部', '2023-07-04', NULL, '17:30'), ('张三', '销售部', '2023-07-05', '12:30', '18:30'), ('李四', '市场部', '2023-07-06', '13:35', '16:45'), ('王五', '人力资源部', '2023-07-07', '16:38', NULL), ('赵六', '技术部', '2023-07-14', NULL, NULL), ('张三', '销售部', '2023-07-15', '16:45', ''), ('李四', '市场部', '2023-07-16', '', ''), ('王五', '人力资源部', '', '', '21:45');
运行效果:
表查询
查询语句:
select * from Employee_Attendance_Log;
运行效果:
练习题
题目1:如何查询在 ‘人力资源部’ 的所有员工的出勤日志?
答案:可以使用以下查询语句来查询在 ‘人力资源部’ 的所有员工的出勤日志:
SELECT * FROM Employee_Attendance_Log WHERE department = '人力资源部';
解析:根据查询条件,只需要在 ‘WHERE’ 子句中指定部门字段为 ‘人力资源部’,即可查询出在 ‘人力资源部’ 的所有员工的出勤日志。
题目2:如何查询在 ‘技术部’ 的员工的出勤日志中未填写离开时间的记录?
答案:可以使用以下查询语句来查询在 ‘技术部’ 的员工的出勤日志中未填写离开时间的记录:
SELECT * FROM Employee_Attendance_Log WHERE department = '技术部' AND time_out IS NULL;
解析:根据查询条件,需要同时满足部门字段为 ‘技术部’ 和离开时间字段为 NULL,即可查询到在 ‘技术部’ 的员工的出勤日志中未填写离开时间的记录。
题目3:如何统计每个月份内各部门的员工出勤总次数?
答案:可以使用以下查询语句来统计每个月份内各部门的员工出勤总次数:
SELECT department, MONTH(log_date) AS Month, COUNT(*) AS AttendanceCount FROM Employee_Attendance_Log GROUP BY department, Month;
解析:首先根据表名和字段名选择出需要统计的字段,然后使用 GROUP BY 子句按照部门和月份进行分组,最后使用 COUNT(*) 函数统计每个月份内各部门的员工出勤总次数。
题目4:如何查询在特定日期范围内所有员工的出勤日志?
答案:可以使用以下查询语句来查询在特定日期范围内所有员工的出勤日志:
SELECT * FROM Employee_Attendance_Log WHERE log_date BETWEEN '2023-07-01' AND '2023-07-31';
解析:根据查询条件,只需要在 ‘WHERE’ 子句中指定日期字段在特定日期范围内即可查询到在该范围内的所有员工的出勤日志。