Wallcreeper
@Wallcreeper
вайтишник, электроник, english, math, python

Как написать SQL-запрос: вывод пользователей, кто отменял дважды заказ в течение получаса?

Имеется таблица orders (user_id, order_id, timestamp, status). Статус имеет два состояния. Надо вывести всех клиентов, кто дважды отменял заказ в течение получаса.
Как я себе представляю, вначале выбрать клиентов подзапросом:
SELECT user_id
FROM orders
GROUP BY user_id
HAVING COUNT(orders.status='cancel')=2,
затем непонятным образом от события status='cancel' задать интервал 30 минут и на нем найти повтор значения 'cancel'.
Как этот интервал реализовать?
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
Ответ на поверхности. Поскольку Вы знаете отправную точку и точное условие для включения пользователя в статистику, то достаточно воспользоваться конструкцией INNER JOIN для поиска пар одинаковых событий в временном промежутке, например наподобие вот этого:
SELECT DISTINCT
  orders.user_id
FROM
  orders
INNER JOIN
  orders AS canceledOrders
ON
  canceledOrders.user_id = orders.user_id
  AND canceledOrders.status = orders.status
  AND canceledOrder.order_id <> orders.order_id
  AND canceled.timestamp - orders.timestamp BETWEEN 0 AND 1800
WHERE
  orders.status = 'cancel'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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