sql >> Database teknologi >  >> RDS >> Mysql

Forespørgselsgruppe efter par af kolonneresultater

Du kan gøre det med en venstre join og derefter trække de 2 datoer fra:

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
  )
 

Se demoen .
Resultater:

| 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. 7 vigtige ting at huske om datamodel globalisering

  2. Få envelope, dvs. overlappende tidsrum

  3. Er der nogen forskel mellem DateTime i c# og DateTime i SQL server?

  4. hvorfor er mysqld'en placeret 4 steder i linux-systemet?