- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 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/
我正在为员工建立一个时间登记系统。我开始将时间保存为 mysql 中的“Datetime”。问题是,当我有两列日期时间时,注册时间只会填充一列,第二列(取决于登录或退出)设置为“0000-00-00
我正在制作一个小程序,员工可以在其中上下类。员工有一个员工 ID,必须使用该 ID 才能上下类。 计时没问题,但我的问题是员工可以多次计时而不会超时。 我想做的是,每当员工计时时,他/她就不允许再次计
我有一个文本框(用于员工 ID)和一个在单击时将员工 ID、当前日期和当前时间(不同列)保存到数据库的时间按钮。问题是我怎样才能将时间限制在每天一次。 这是我的代码: exec($sql);
根据下面给定的模式,我想在我的数据库中查询员工每天进出的时间。 注意:员工的工作时间很灵活,他们可以上夜类或白类(正如您在员工 #1 中看到的那样)。 架构:出勤表 | id | employee_i
我是一名优秀的程序员,十分优秀!