-- 1. 查询所有在职员工的姓名和职位 -- 查询类型:比较条件 SELECT Name, Position FROM Employee WHERE EmploymentStatus = '在职'; -- 2. 查询所有已批准的年假记录 -- 查询类型:比较条件 SELECT e.Name, l.LeaveType, l.StartDate, l.EndDate FROM LeaveRequest l JOIN Employee e ON l.EmployeeID = e.EmployeeID WHERE l.LeaveType = '年假' AND l.RequestStatus = '已批准'; -- 3. 查询1985年6月21日后入职的员工姓名和职位 -- 查询类型:范围比较 SELECT Name, Position FROM Employee WHERE HireDate > '1985-06-21'; -- 4. 查询所有在2024年1月到2024年3月间请病假的员工及其假期天数 -- 查询类型:范围比较 SELECT e.Name, l.LeaveDays, l.StartDate, l.EndDate FROM LeaveRequest l JOIN Employee e ON l.EmployeeID = e.EmployeeID WHERE l.LeaveType = '病假' AND l.StartDate BETWEEN '2024-01-01' AND '2024-03-31'; -- 5. 查询所有名字中包含“王”字的员工 -- 查询类型:字符串相似比较 SELECT Name FROM Employee WHERE Name LIKE '%王%'; -- 6. 查询所有职位为“技术总监”或者“产品经理”的员工 -- 查询类型:集合比较 SELECT Name, Position FROM Employee WHERE Position IN ('技术总监', '产品经理'); -- 7. 查询所有缺勤记录的员工姓名和考勤日期 -- 查询类型:集合比较 SELECT e.Name, a.AttendanceDate FROM Attendance a JOIN Employee e ON a.EmployeeID = e.EmployeeID WHERE a.AttendanceStatus = '缺勤'; -- 8. 查询所有2024年1月缺勤超过3天的员工姓名 -- 查询类型:集合比较 SELECT e.Name FROM AttendanceSummary a JOIN Employee e ON a.EmployeeID = e.EmployeeID WHERE a.AbsentDays > 3 AND a.Month LIKE '2024-01%'; -- 9. 查询所有迟到超过5分钟的员工 -- 查询类型:比较条件 SELECT e.Name, a.AttendanceDate FROM Attendance a JOIN Employee e ON a.EmployeeID = e.EmployeeID WHERE TIMESTAMPDIFF(MINUTE, a.CheckInTime, '09:00:00') > 5; -- 10. 查询所有2024年5月1日至5月5日请假超过2天的员工 -- 查询类型:范围比较 SELECT e.Name, l.LeaveDays FROM LeaveRequest l JOIN Employee e ON l.EmployeeID = e.EmployeeID WHERE l.StartDate BETWEEN '2024-05-01' AND '2024-05-05' AND l.LeaveDays > 2; -- 11. 查询所有职位为“经理”或“主管”的员工及其入职日期 -- 查询类型:集合比较 SELECT Name, Position, HireDate FROM Employee WHERE Position IN ('经理', '主管'); -- 12. 查询所有2024年12月1日的考勤记录 -- 查询类型:范围比较 SELECT e.Name, a.AttendanceDate, a.AttendanceStatus FROM Attendance a JOIN Employee e ON a.EmployeeID = e.EmployeeID WHERE a.AttendanceDate = '2024-12-01'; -- 13. 查询所有名字以“张”开头的员工 -- 查询类型:字符串相似比较 SELECT Name FROM Employee WHERE Name LIKE '张%'; -- 14. 查询所有部门是“研发部”且在2024年12月有请假记录的员工 -- 查询类型:多表连接 SELECT e.Name, l.LeaveType, l.StartDate, l.EndDate FROM Employee e JOIN Department d ON e.DepartmentID = d.DepartmentID JOIN LeaveRequest l ON e.EmployeeID = l.EmployeeID WHERE d.DepartmentName = '研发部' AND l.StartDate BETWEEN '2024-12-01' AND '2024-12-31'; -- 15. 查询所有部门为“人事部”的员工,并返回其主管姓名 -- 查询类型:多表连接 SELECT e.Name AS EmployeeName, m.Name AS ManagerName FROM Employee e JOIN Department d ON e.DepartmentID = d.DepartmentID JOIN Employee m ON d.ManagerID = m.EmployeeID WHERE d.DepartmentName = '人事部'; -- 16. 查询所有2024年7月未请假员工的姓名 -- 查询类型:多表连接 SELECT e.Name FROM Employee e LEFT JOIN LeaveRequest l ON e.EmployeeID = l.EmployeeID WHERE l.LeaveType IS NULL OR l.StartDate NOT LIKE '2024-07%'; -- 17. 查询所有员工及其部门名称 -- 查询类型:多表连接 SELECT e.Name, d.DepartmentName FROM Employee e JOIN Department d ON e.DepartmentID = d.DepartmentID; -- 18. 查询所有职位为“销售经理”的员工及其所在的部门名称 -- 查询类型:多表连接 SELECT e.Name, d.DepartmentName FROM Employee e JOIN Department d ON e.DepartmentID = d.DepartmentID WHERE e.Position = '销售经理'; -- 19. 查询2024年上半年未请过假的员工姓名 -- 查询类型:嵌套查询 SELECT e.Name FROM Employee e WHERE e.EmployeeID NOT IN ( SELECT DISTINCT EmployeeID FROM LeaveRequest WHERE LeaveStartDate BETWEEN '2024-01-01' AND '2024-06-30' OR LeaveEndDate BETWEEN '2024-01-01' AND '2024-06-30' ); -- 20. 查询所有已经提交申请且状态为“已批准”的年假记录 -- 查询类型:EXISTS查询 SELECT e.Name, l.LeaveType, l.StartDate, l.EndDate FROM Employee e JOIN LeaveRequest l ON e.EmployeeID = l.EmployeeID WHERE EXISTS ( SELECT 1 FROM LeaveRequest lr WHERE lr.EmployeeID = e.EmployeeID AND lr.RequestStatus = '已批准' );