我有一个MySQL表,其中记录了员工的登录和注销时间。在“输入输出”列中,“ 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中执行此操作,但无法使用单个查询来执行此操作。
SELECT `User_id`, time(sum(`Date_time`*(1-2*`in_out`))) FROM `whatever_table` GROUP BY `User_id`;
(1-2 * in_out)项给每个登录事件一个-1因子,每个退出事件一个+1因子。该sum函数获取Date_time列的总和,然后GROUP BYUser_id会为每个不同的用户创建总和。
sum
Date_time
User_id