sql >> Database >  >> RDS >> Mysql

Querygroep per paar kolomresultaat

Je kunt het doen met een left join en dan de 2 datums aftrekken:

select 
  t.id, 
  t.action_date login_date, tt.action_date logout_date,
  t.user_id,
  (tt.action_date - t.action_date) / 100 session_time
from (
  select * from session where status = 'LOGIN'  
) t left join (
  select * from session where status = 'LOGOUT'    
) tt on tt.user_id = t.user_id and 
  tt.action_date = (
    select min(action_date) from session
    where status = 'LOGOUT' and user_id = t.user_id and action_date > t.action_date
  )

Bekijk de demo .
Resultaten:

| id  | login_date          | user_id | logout_date         | session_time |
| --- | ------------------- | ------- | ------------------- | ------------ |
| 1   | 2019-07-16 07:06:55 | Bob     | 2019-07-16 07:29:13 | 22.58        |
| 3   | 2019-07-16 07:30:31 | Bob     | 2019-07-16 07:49:50 | 19.19        |
| 5   | 2019-07-16 08:05:55 | Tom     | 2019-07-16 08:15:13 | 9.58         |
| 7   | 2019-07-16 09:13:55 | John    | 2019-07-16 09:20:13 | 6.58         |



  1. Hoe kan ik bigint (UNIX-tijdstempel) converteren naar datetime in SQL Server?

  2. 4 functies om het jaar terug te geven vanaf een datum in MariaDB

  3. Een limiet gebruiken voor een left join in mysql

  4. Doctrine houdt entiteit niet vol met booleaanse waarden en PDO::ATTR_EMULATE_PREPARES =false in Mysql