Mysql
 sql >> Database >  >> RDS >> Mysql

trova transazione consecutiva entro 10 minuti

In base al formato delle tue date nella tabella, dovrai convertirle utilizzando STR_TO_DATE per usarli in una query. Se la tua colonna è in realtà un datetime digita, e questo è solo il tuo codice di visualizzazione che genera quel formato, sostituisci semplicemente STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') in questa query con xxx .

Il modo per trovare gli ordini entro 10 minuti l'uno dall'altro è unirsi autonomamente al tuo tavolo su user_id , order_id e l'ora del secondo ordine entro l'ora del primo ordine e 10 minuti dopo:

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

Uscita:

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

Demo su dbfiddle