MySQL员工打卡日志表——数据库练习

本文详细描述了一个包含员工姓名、部门、打卡日期和时间的简单员工打卡日志表的建表语句,提供测试数据,并展示了如何使用SQL查询特定部门的出勤记录和统计每月出勤次数等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的员工打卡日志表的建表语句以及对应的测试数据。为了简单明了,我们将使用一个包含以下字段的表:

列名数据类型描述
idINT记录的唯一标识符
nameVARCHAR(50)员工姓名
departmentVARCHAR(50)员工所在的部门
log_dateDATE打卡日期
time_inTIME打卡时间(上班)
time_outTIME打卡时间(下班)

建表语句

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’ 子句中指定日期字段在特定日期范围内即可查询到在该范围内的所有员工的出勤日志。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红目香薰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值