2016 - 2024

感恩一路有你

深入了解考勤查询统计SQL脚本

浏览量:4651 时间:2024-05-24 07:48:29 作者:采采

---

员工考勤记录查询功能详解

在公司的考勤系统中,查询员工的考勤记录是至关重要的功能之一。通过SQL脚本可以实现根据员工号、卡号、日期等条件来查询员工的打卡记录,并进一步统计员工的上下班打卡时间、工作日类型以及打卡状态等信息。这样的功能可以帮助企业管理者更加方便地监控员工的考勤情况。以下是一个示例的SQL语句:

```sql

SELECT 员工号, 卡号, 姓名, 日期,

'打卡记录' AS 考勤类型,

Substring(日期, 1, 4) AS 年份,

Substring(日期, 6, 2) AS 月份,

Datename(weekday, 日期) AS 工作日类型,

Min(打卡时间) AS 上班打卡时间,

Max(打卡时间) AS 下班打卡时间,

CASE

WHEN Datename(weekday, 日期) <> '星期六' AND Datename(weekday, 日期) <> '星期日' THEN

(CASE

WHEN Min(打卡时间) Max(打卡时间) THEN '上班或下班忘打卡'

WHEN Min(打卡时间) > '08:00:00' THEN '迟到'

WHEN Max(打卡时间) < '17:00:00' THEN '早退'

ELSE '正常'

END)

ELSE '非工作日打卡'

END AS 状态

FROM (

SELECT a.[emp_id] AS 员工号, a.[card_id] AS 卡号, b.[emp_fname] AS 姓名,

CONVERT(CHAR(10), sign_time, 120) AS 日期, CONVERT(VARCHAR, sign_time, 108) AS 打卡时间

FROM [dbo].[TimeRecords] a

LEFT JOIN [dbo].[Employee] b ON a.emp_id b.emp_id AND a.[card_id] b.[card_id]

WHERE a.emp_id IS NOT NULL AND a.emp_id <> ' '

AND CONVERT(CHAR(10), sign_time, 120) BETWEEN '2018-09-01' AND '2018-10-30'

AND b.[emp_fname] '姓名'

) AS mm

GROUP BY mm.员工号, 卡号, 姓名, mm.日期

ORDER BY 员工号, 日期 ASC

```

---

部门员工打卡记录查询功能介绍

除了按照员工个人进行考勤记录查询外,还可以根据部门、员工姓名、日期等条件来查询员工的打卡记录。通过以下SQL语句可以实现该功能:

```sql

SELECT a.emp_fname, _name, CONVERT(CHAR(10), sign_time, 120) AS date,

Min(_time) AS BeginTime,

Max(_time) AS EndTime,

Datediff(minute, Min(_time), Max(_time)) AS minute

FROM Employee a

LEFT JOIN Departs b ON _id _id

LEFT JOIN TimeRecords c ON a.emp_id c.emp_id

WHERE Substring(_id, 1, 3) '041'

AND CONVERT(CHAR(10), sign_time, 120) BETWEEN '2018-11-01' AND '2018-11-30'

AND a.emp_id IS NOT NULL

GROUP BY depart_name, emp_fname, CONVERT(CHAR(10), sign_time, 120)

ORDER BY depart_name, emp_fname, CONVERT(CHAR(10), sign_time, 120) ASC

```

以上SQL语句可以帮助企业管理者更全面地了解各部门员工的考勤情况,有助于及时发现和解决可能存在的问题。

---

加班统计与请假时长查询功能详述

在企业的人力资源管理中,加班和请假的情况也是需要被严密监控的。通过SQL语句可以轻松实现加班类型和请假时长的统计功能。以下是示例SQL脚本:

```sql

SELECT applyUser, ApplyDept,

Sum(CASE WHEN leavetype '事假' THEN leaveHours ELSE 0 END) AS 事假,

Sum(CASE WHEN leavetype '病假' THEN leaveHours ELSE 0 END) AS 病假,

Sum(CASE WHEN leavetype '产检假' THEN leaveHours ELSE 0 END) AS 产前病事假,

Sum(CASE WHEN leavetype '产假' OR LeaveType '陪产假' THEN leaveHours ELSE 0 END) AS 产假或护理假,

Sum(CASE WHEN leavetype '婚假' THEN leaveHours ELSE 0 END) AS 婚假,

Sum(CASE WHEN leavetype '丧假' THEN leaveHours ELSE 0 END) AS 丧假,

Sum(CASE WHEN leavetype '年休假' THEN leaveHours ELSE 0 END) AS 年假,

Sum(CASE WHEN leavetype '公假' THEN leaveHours ELSE 0 END) AS 公假,

Sum(CASE WHEN leavetype '其他' THEN leaveHours ELSE 0 END) AS 其他,

Sum(CASE WHEN leavetype '调休' THEN leaveHours ELSE 0 END) AS 调休,

Sum(CASE WHEN leavetype '工伤假' THEN leaveHours ELSE 0 END) AS 工伤假

FROM HR_Leave

WHERE CompanyId 16 AND Node 2

AND CONVERT(CHAR(10), Start, 120) BETWEEN '2018-09-01' AND '2018-12-30'

GROUP BY ApplyDept, ApplyUserId, ApplyUser

```

这些功能的实现可以让企业更加高效地管理员工的加班和请假情况,避免因为数据统计不准确而导致的管理混乱。

---

总结

通过上述SQL脚本,我们可以实现对员工考勤记录、部门员工打卡情况、加班统计以及请假时长等各种功能的查询和统计。这些功能的有效使用将大大提升企业的管理效率和精准度,为企业管理者提供更多决策支持和数据参考。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。