sql >> Base de Datos >  >> RDS >> Mysql

calcular el tiempo total de inicio y cierre de sesión de un usuario en particular en mysql

La recomendación de a'r tiene mucho sentido. Además, calcular la duración de cada sesión al cerrar la sesión es un enfoque mucho mejor; aunque esto no está estrictamente normalizado, distribuye la carga de cálculo....

SELECT ilv.employee, 
SUM(UNIX_TIMESTAMP(logouttime) 
  - IF(logintime IS NULL, 
        UNIX_TIMESTAMP(logouttime), 
        UNIX_TIMESTAMP(logintime)))
FROM (
    SELECT a.employeeId, a.time AS logouttime,
    (SELECT MAX(b.time)
      FROM log b
      WHERE b.employeeId=a.employeeId
      AND b.time<a.time
      AND b.type='login')  as logintime
    FROM log a 
    WHERE a.type='logout'
    AND a.time BETWEEN <range start> AND <range end>
    AND employeeId=1 /* optional */
) ilv
GROUP BY ilv.employeeId