MySQL - 让所有员工在日期范围内及时和最后一次打卡

时间:2017-08-25 22:13:43

标签: mysql sql database mysql-workbench

我需要在日期范围内找到所有员工的首次登录时间和上次退出时间。到目前为止,我尝试了使用Group by子句的不同方法,但是无法得到我想要的东西我尝试了这个查询

weblogic.jndi.WLInitialContextFactory

我实现了我想要的但是这给了我重复的结果。这是日志enter image description here

的实际表格

以下是我迄今取得的成就enter image description here

我想要与第二张图片相同的结果,但没有重复的行。我发现OVER& MySQL中没有PARTITION,这使得它变得更加困难。我不喜欢自我加入。

1 个答案:

答案 0 :(得分:1)

您可以将查询包装到另一个SELECT并在其上应用GROUP BY,例如:

SELECT a.EmpName, a.LogDate, a.login, a.logout, a.logID
FROM (
  SELECT p1.EmpName, p1.LogDate,  
    (SELECT MIN(LogTime) FROM log as p2 WHERE p2.EmpName=p1.EmpName Group by p2.EmpName) as login, 
    (SELECT MAX(LogTime) FROM log as p2 WHERE p2.EmpName=p1.EmpName Group by p2.EmpName) as logout, LogID 
  FROM log as p1 WHERE LogDate Between '2017-08-05 00:00:00' AND '2017-08-010 
  00:00:00' group by SrNo
) a
GROUP BY a.EmpName, a.LogDate, a.login, a.logout, a.logID