创建一个员工考勤表的视图 里面有员工号,考勤月份,迟到天数,上班天数这几个东西 写不来 请教一下

img


创建一个员工考勤表的视图 里面有员工号,考勤月份,迟到天数,上班天数这几个东西

CREATE VIEW employee_attendance AS
SELECT employee_number, attendance_month,
SUM(CASE WHEN attendance_status = '迟到' THEN 1 ELSE 0 END) AS late_days,
COUNT(*) AS working_days
FROM attendance_table
GROUP BY employee_number, attendance_month;

以下回答来自chatgpt
什么数据库,mysql?
以下是创建员工考勤表的视图的SQL语句:

CREATE VIEW employee_attendance AS
SELECT 
    emp_id,
    DATE_FORMAT(att_date, '%Y-%m') AS attendance_month,
    SUM(CASE WHEN att_status = 'late' THEN 1 ELSE 0 END) AS late_days,
    COUNT(*) AS work_days
FROM 
    attendance
GROUP BY 
    emp_id, attendance_month;

解释一下上面的SQL语句:

  • employee_attendance 是我们创建的视图名称。
  • emp_id 是员工号。
  • att_date 是考勤日期。
  • att_status 是考勤状态,比如正常、迟到、早退等。
  • attendance_month 是考勤月份,使用 DATE_FORMAT 函数将 att_date 转换为年月格式。
  • SUM(CASE WHEN att_status = 'late' THEN 1 ELSE 0 END) 统计迟到天数,使用 CASE WHEN 语句判断考勤状态是否为迟到,如果是则计数为1,否则计数为0,最后使用 SUM 函数求和。
  • COUNT(*) 统计上班天数,使用 COUNT 函数计算考勤记录数。

使用这个视图,你可以方便地查询每个员工每个月的考勤情况,例如:

SELECT * FROM employee_attendance WHERE emp_id = 1001 AND attendance_month = '2022-01';

这个查询将返回员工号为 1001,考勤月份为 2022 年 1 月的考勤情况,包括迟到天数和上班天数。