我一直在StackOverflow周围寻找类似的问题,但似乎找不到。我想知道按员工ID分组的不同行中的时间戳之间的区别。
时间记录表:
id timestamp log_type
1 2019-06-19 12:34:50 log_in
2 2019-06-19 13:12:46 start_break
3 2019-06-19 13:13:56 end_break
4 2019-06-19 17:23:40 start_break
5 2019-06-19 17:44:36 end_break
6 2019-06-19 19:00:04 start_break
7 2019-06-19 19:03:17 end_break
8 2019-06-19 20:05:54 log_out
我要完成的工作是计算所有休息时间。在这种情况下,第1个中断(ID#2和#3)为1分钟10秒,第2个中断(ID#4和#5)为20分钟56秒,第3个中断(ID#6和#7)为3分钟和13秒,总共25分钟和19秒。
感谢您的帮助!非常感谢。
答案 0 :(得分:1)
您可以在下面尝试-
array
输出:
select SEC_TO_TIME(sum(diff)) as result from
(
select
timestampdiff(second,min(case when log_tpe='start_break' then timestamps end) ,
min(case when log_tpe='end_break' then timestamps end)) as diff
from t
group by date(timestamps),hour(timestamps)
)A