我有一个记录员工登录和注销时间的MySQL表。在这里的in-out列中,1-表示登录,0-表示注销。
[id] [User_id] [Date_time] [in_out]
1 1 2011-01-20 09:30:03 1
2 1 2011-01-20 11:30:43 0
3 1 2011-01-20 11:45:12 1
4 1 2011-01-20 12:59:56 0
5 1 2011-01-20 13:33:11 1
6 1 2011-01-20 15:38:16 0
7 1 2011-01-20 15:46:23 1
8 1 2011-01-20 17:42:45 0用户是否可以使用单个查询检索一天中的总工作小时数?
我尝试了很多,但都是徒劳的。我可以使用数组在PHP中做到这一点,但不能使用单个查询来做到这一点。
发布于 2011-01-20 17:45:21
试一试:
select [User_id], sum([Time_count])/3600
from (
select [User_id],
case when [in_out]=1 then UNIX_TIMESTAMP([Date_time])
when [in_out]=0 then - UNIX_TIMESTAMP([Date_time])
end as [Time_count]
from my_table
) as a
group by [User_id]我不知道MySQL的语法,所以如果有人发现错误,请纠正他们。也许不能工作。例如,如果您有一个用户已登录。在这种情况下,您只能过滤[in_out]字段中具有相同数量的1和0的用户。
https://stackoverflow.com/questions/4745182
复制相似问题