小编典典

获取一天中mysql的总工作时间

mysql

我有一个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中执行此操作,但无法使用单个查询来执行此操作。


阅读 447

收藏
2020-05-17

共1个答案

小编典典

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会为每个不同的用户创建总和。

2020-05-17