gpt4 book ai didi

mysql - 使用SQL语句获取考勤记录

转载 作者:行者123 更新时间:2023-11-29 22:07:59 27 4
gpt4 key购买 nike

我正在尝试创建一个 SQL 来生成出勤报告,以确定缺勤、迟到、登录不完整和超时的情况。下面是我使用的虚拟表。

 Employee 

Employee ID Name
001 Paul
002 Juan
003 Elise

Schedule

ID EmployeeID Schedule
1 001 11:00PM - 8:00AM
2 002 11:00PM - 8:00AM
3 003 11:00PM - 8:00AM


Attendance

ID EmployeeID Type Datetime
1 001 0 2015-07-25 22:00:00
2 002 0 2015-07-25 22:48:00
3 003 0 2015-07-25 20:48:00
1 001 1 2015-07-25 08:00:00
2 002 1 2015-07-25 08:44:00
3 003 1 2015-07-25 08:00:00

我的sql

SELECT * FROM Employee 
INNER JOIN Schedule ON Employee.EmployeeID = Schedule.EmployeeID
INNER JOIN Attendance ON Employee.EmployeeID = Attendance.EmployeeID
CASE WHEN Schedule.Schedule < Attendance.DateTime THEN 1 as Late;

这是我的sql,但我不确定它是否正确。从那时起它将加 1 到较晚。我使用 type 列来确定登录和注销,其中 1 是注销,0 是登录。另外,我们如何才能获得定义日期的迟到总数,例如,2015-07-20 到 2015-07-25。有什么帮助吗?

最佳答案

这里有点猜测,因为没有什么可以使用的。我建议您不要养成在不同表中更改给定信息的列名称的习惯。 EmployeeID 应始终为 EmployeeID。

这样的事情应该可以让你指明正确的方向。

select e.EmployeeID
, e.Name
, SUM(Case when s.Schedule < a.DateTime THEN 1 else 0 end) as TotalLate
, SUM(case when a.DateTime is null then 1 else 0 end) as TotalAbsent
from Employee e
join Schedule s on s.EmployeeID = e.ID
left join Attendance a on a.EmployeeID = e.ID and a.ID = s.ID

关于mysql - 使用SQL语句获取考勤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com