Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aufeinanderfolgende Transaktionen innerhalb von 10 Minuten finden

Basierend auf dem Format Ihrer Daten in der Tabelle müssen Sie sie mit STR_TO_DATE konvertieren um sie in einer Abfrage zu verwenden. Wenn Ihre Spalte ist eigentlich ein datetime eingeben, und das ist nur Ihr Anzeigecode, der dieses Format ausgibt, ersetzen Sie einfach STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') in dieser Abfrage mit xxx .

Um Bestellungen innerhalb von 10 Minuten zu finden, müssen Sie sich selbst unter user_id an Ihrem Tisch anmelden , order_id und die Zeit der zweiten Bestellung innerhalb der Zeit der ersten Bestellung und 10 Minuten später liegt:

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

Ausgabe:

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 auf dbfiddle