Mysql
 sql >> база данни >  >> RDS >> Mysql

намерете последователна транзакция в рамките на 10 минути

Въз основа на формата на вашите дати в таблицата ще трябва да ги преобразувате с помощта на STR_TO_DATE да ги използвате в заявка. Ако вашата колона е всъщност datetime тип и това е само вашият код на дисплея, извеждащ този формат, просто заменете STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') в тази заявка с xxx .

Начинът да намерите поръчки в рамките на 10 минути една от друга е да се присъедините самостоятелно към вашата маса на user_id , order_id и времето на втората поръчка е в рамките на времето на първата поръчка и 10 минути по-късно:

SELECT t1.user_id, t1.create_time AS order1_time, t2.create_time AS order2_time
FROM transactions t1
JOIN transactions t2 ON t2.user_id = t1.user_id
                    AND t2.order_id != t1.order_id
                    AND STR_TO_DATE(t2.create_time, '%m/%d/%Y %k:%i') BETWEEN
                           STR_TO_DATE(t1.create_time, '%m/%d/%Y %k:%i') 
                       AND STR_TO_DATE(t1.create_time, '%m/%d/%Y %k:%i') + INTERVAL 10 MINUTE

Изход:

user_id     order1_time     order2_time
101         4/2/2018 8:34   4/2/2018 8:37
103         4/2/2018 9:32   4/2/2018 9:36
106         4/2/2018 13:11  4/2/2018 13:18

Демо на dbfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преминаване през mysql_fetch_array в PHP

  2. Преименувайте таблица в MySQL

  3. Деактивирайте ограничаването на външния ключ на Doctrine

  4. Вземете Json ключове в MySQL за определена стойност

  5. Какъв mysql двигател за огромно количество данни (регистриране)?