sql >> Databáze >  >> RDS >> Mysql

najít po sobě jdoucí transakci do 10 minut

Na základě formátu vašich dat v tabulce je budete muset převést pomocí STR_TO_DATE použít je v dotazu. Pokud váš sloupec je ve skutečnosti datetime zadejte, a to je pouze váš zobrazovací kód, který vydává tento formát, stačí nahradit STR_TO_DATE(xxx, '%m/%d/%Y %k:%i') v tomto dotazu pomocí xxx .

Způsob, jak najít objednávky do 10 minut od sebe, je připojit se ke stolu na user_id , order_id a čas druhé objednávky je v rámci času první objednávky a o 10 minut později:

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

Výstup:

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

Ukázka na dbfiddle



  1. Jak zapíšu data z R do tabulek PostgreSQL s automaticky se zvyšujícím primárním klíčem?

  2. Je někdy volána metoda onUpgrade?

  3. Jak přepočítat primární index?

  4. jak přidat hodiny a minuty do curdate mysql