我需要获取数据库中的第一个日志并确定延迟了多少分钟并将其总结。 java
I need to get the first log in database and determine how many minutes late and sum it up. java
这是我的数据库的示例
-table 条记录
name loginDate loginTime
Chin 2015-01-02 9:00
Chris 2015-01-02 9:40
Chin 2015-01-02 10:00
Chris 2015-01-02 10:09
Chin 2015-01-03 8:00
Chin 2015-01-03 9:00
Chris 2015-01-03 9:01
Chris 2015-01-03 9:03
-table 员工
name startingTime
Chin 8:30
Chris 9:00
所以基本上,我需要一个查询,它可以 return 仅当天的第一次登录,并通过比较另一个 table 中的 startingTime 来确定他是否迟到,并得到他们的分钟数。 return 值应该是:
Chin 2015-01-02 9:00 30
Chris 2015-01-02 9:40 40
Chris 2015-01-03 9:01 1
我使用此代码来确定首次登录和延迟分钟数:
SELECT t.name, t.logindate, t.loginTime, timestampdiff(minute, t1.startingTime,
t.loginTime) as is_late
FROM
( SELECT name, loginDate, TIME(MIN(loginTime)) as loginTime
FROM records
GROUP BY name, loginDate
) t
JOIN employee t1 ON t.name = t1.name
HAVING is_late > 0
现在,我想弄清楚如何总结每个名字的所有迟到分钟数。 return 值应该是这样的:
name date logIn minLate totalMinLate
Chin 2015-01-02 9:00 30 30
Chris 2015-01-02 9:40 40 41
Chris 2015-01-03 9:01 1 41
或者你可以给我一个很好的其他方法来让每个名字都没有冗余的总迟到分钟数。
PS。我正在使用 java netbeans
如果您能给我一个可以帮助我获得我需要的确切 return 值的查询,谢谢!
假设此声明有效:
SELECT t.name, t.logindate, t.loginTime, if(timestampdiff(minute,
t1.startingTime, t.loginTime) > 0, timestampdiff(minute, t1.startingTime,
t.loginTime), 0) as minLate
FROM
( SELECT name, loginDate, TIME(MIN(loginTime)) as loginTime
FROM records
GROUP BY name, loginDate
) t
JOIN employee t1 ON t.name = t1.name
HAVING is_late > 0
然后你能运行像这样的东西吗:
SELECT name, logindate, sum(minLate)
from (
SELECT t.name, t.logindate, t.loginTime, if(timestampdiff(minute,
t1.startingTime, t.loginTime) > 0, timestampdiff(minute, t1.startingTime,
t.loginTime), 0) as minLate
FROM
( SELECT name, loginDate, TIME(MIN(loginTime)) as loginTime
FROM records
GROUP BY name, loginDate
) t
JOIN employee t1 ON t.name = t1.name
HAVING is_late > 0)
group by name, logindate
这是我的数据库的示例
-table 条记录
name loginDate loginTime
Chin 2015-01-02 9:00
Chris 2015-01-02 9:40
Chin 2015-01-02 10:00
Chris 2015-01-02 10:09
Chin 2015-01-03 8:00
Chin 2015-01-03 9:00
Chris 2015-01-03 9:01
Chris 2015-01-03 9:03
-table 员工
name startingTime
Chin 8:30
Chris 9:00
所以基本上,我需要一个查询,它可以 return 仅当天的第一次登录,并通过比较另一个 table 中的 startingTime 来确定他是否迟到,并得到他们的分钟数。 return 值应该是:
Chin 2015-01-02 9:00 30
Chris 2015-01-02 9:40 40
Chris 2015-01-03 9:01 1
我使用此代码来确定首次登录和延迟分钟数:
SELECT t.name, t.logindate, t.loginTime, timestampdiff(minute, t1.startingTime,
t.loginTime) as is_late
FROM
( SELECT name, loginDate, TIME(MIN(loginTime)) as loginTime
FROM records
GROUP BY name, loginDate
) t
JOIN employee t1 ON t.name = t1.name
HAVING is_late > 0
现在,我想弄清楚如何总结每个名字的所有迟到分钟数。 return 值应该是这样的:
name date logIn minLate totalMinLate
Chin 2015-01-02 9:00 30 30
Chris 2015-01-02 9:40 40 41
Chris 2015-01-03 9:01 1 41
或者你可以给我一个很好的其他方法来让每个名字都没有冗余的总迟到分钟数。
PS。我正在使用 java netbeans
如果您能给我一个可以帮助我获得我需要的确切 return 值的查询,谢谢!
假设此声明有效:
SELECT t.name, t.logindate, t.loginTime, if(timestampdiff(minute,
t1.startingTime, t.loginTime) > 0, timestampdiff(minute, t1.startingTime,
t.loginTime), 0) as minLate
FROM
( SELECT name, loginDate, TIME(MIN(loginTime)) as loginTime
FROM records
GROUP BY name, loginDate
) t
JOIN employee t1 ON t.name = t1.name
HAVING is_late > 0
然后你能运行像这样的东西吗:
SELECT name, logindate, sum(minLate)
from (
SELECT t.name, t.logindate, t.loginTime, if(timestampdiff(minute,
t1.startingTime, t.loginTime) > 0, timestampdiff(minute, t1.startingTime,
t.loginTime), 0) as minLate
FROM
( SELECT name, loginDate, TIME(MIN(loginTime)) as loginTime
FROM records
GROUP BY name, loginDate
) t
JOIN employee t1 ON t.name = t1.name
HAVING is_late > 0)
group by name, logindate