sql >> Database >  >> RDS >> Mysql

totale inlog-uitlogtijd van een bepaalde gebruiker berekenen in mysql

a'r's aanbeveling is heel logisch. Ook het berekenen van de duur voor elke sessie bij het uitloggen is een veel betere benadering - hoewel dit niet strikt genormaliseerd is, spreidt het de berekeningslast....

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



  1. Een overzicht van caching voor PostgreSQL

  2. SQL Server FOR XML Pad maken herhalende knooppunten

  3. MySQL Groeperen op datums tussen

  4. Waarden invoegen in een IDENTITY-kolom in SQL Server