Задать вопрос
@disable1992

Фильтрация со смещением?

Есть следующий набор данных

s1  in1  out1  t1  date1
s2  in2  out2  t2  date2
...
si  ini  outi  ti  datei


где date - дата когда сессия началась (DATETIME) и time - сколько продлилась сессия в секундах (BIGINT).
Нужен запрос со следующей фильтрацией:

строка попадает в результат запроса если:
    datei+1-datei<ti


Дело в том что в базе есть фективные записи, и так их можно отсеить. Велосипед программно писать не охота. Можно ли это реализовать в MySQL запросе?
  • Вопрос задан
  • 2364 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@disable1992 Автор вопроса
SELECT
    *
FROM
    (
        SELECT
        Table1.s1,
        Table1.date,
        Table1.t,
        (
        SELECT
           MIN(tbl.s1) AS s1
        FROM
           Table1 AS tbl
        WHERE 
            tbl.s1 > Table1.s1
        ) as NextId
    FROM
        Table1
) AS tblInner
JOIN Table1 AS Next
    ON tblInner.NextId=Next.s1
WHERE TIMESTAMPDIFF(SECOND,Next.date,tblInner.date)<tblInner.t


Подсказали на "стэке". Теперь адаптируем под реальную БД)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы