Снятие перекрытия datetime в Mysql

0

У меня есть таблица, в которой хранятся время входа и выхода из системы. Помогите мне с удалением перекрытия datetime между строками

У меня такая таблица такая

id | login_time           | logout_time
1  |'2017-02-20 11:20:00' | '2017-02-20 12:10:00'
2  |'2017-02-20 12:13:00' | '2017-02-20 12:40:00'
3  |'2017-02-20 12:30:00' | '2017-02-20 13:10:00'
4  |'2017-02-20 13:20:00' | '2017-02-20 13:30:00'
5  |'2017-02-20 13:25:00' | '2017-02-20 14:20:00'

Результат должен быть похож

login_time           | logout_time
2017-02-20 11:20:00  | 2017-02-20 12:10:00
2017-02-20 12:13:00  | 2017-02-20 13:10:00
2017-02-20 13:20:00  | 2017-02-20 14:20:00

Помоги мне.

  • 1
    Я не вижу совпадений.
  • 0
    Перекрытие на уровне агента?
Показать ещё 7 комментариев
Теги:

2 ответа

1

В соответствии с вашим образцом вывода я изменил свой запрос и проверил, что он возвращает ожидаемый набор результатов

select t1.logintime,t2.logoutime from
(
select F1.logintime,F1.rank from 
(
select 
  t.logintime,
  CASE WHEN @prevRank = logintime THEN @currRank
       WHEN @prevRank := logintime THEN @currRank := @currRank + 1
   END AS rank
from (
  select  min(login_time) as logintime from time_table
group by hour(login_time) 
  ) t
  cross join (SELECT @currRank := 0, @prevRank := NULL) r

  ) as F1
 ) t1 

inner join

(
select F2.logoutime,F2.rank from
(
select 
  t.logoutime,
  CASE WHEN @preRank = logoutime THEN @curRank
       WHEN @preRank := logoutime THEN @curRank := @curRank + 1
   END AS rank
from (
  select  min(logout_time) as logoutime from time_table
group by hour(logout_time) 
  ) t
  cross join (SELECT @curRank := 0, @preRank := NULL) r

  ) F2
  ) as  t2

  on t1.rank = t2.rank
  • 0
    эй, ты прибил это человек
  • 0
    @learningstudent это помогает?
Показать ещё 4 комментария
0

коррелированный подзапрос с "существует" должен решить вашу проблему

select login_time,logout_time 
from time_table TT1
where not exists 
(
select 1
from time_table TT2
where TT1.login_time  >= TT2.login_time AND 
TT1.login_time <=TT2.logout_time and tt1.id > tt2.id ) 

SQl скрипку ссылка

  • 0
    Это не работает. нет ошибок нет выходных
  • 0
    @learningstudent просто маленький глюк, пожалуйста, проверьте сейчас
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню