Mysql
 sql >> Base de données >  >> RDS >> Mysql

trouver une transaction consécutive dans les 10 minutes

En fonction du format de vos dates dans le tableau, vous devrez les convertir en utilisant STR_TO_DATE pour les utiliser dans une requête. Si votre colonne est en fait un datetime type, et c'est juste votre code d'affichage qui produit ce format, remplacez simplement STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') dans cette requête avec xxx .

La façon de trouver des commandes à moins de 10 minutes d'intervalle est de rejoindre votre table sur user_id , order_id et le temps sur la deuxième commande étant dans le temps de la première commande et 10 minutes plus tard :

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

Sortie :

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

Démo sur dbfiddle