Задать вопрос
@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 запросе?
  • Вопрос задан
  • 2365 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • ProductStar
    Профессия: Java-разработчик
    9 месяцев
    Далее
  • GB (GeekBrains)
    Профессия Python-разработчик
    10 месяцев
    Далее
Решения вопроса 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


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

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

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