sql >> Base de Datos >  >> RDS >> Mysql

MySQL, ¿cómo escribir SQL para encontrar transacciones excesivas en ventanas de 15 minutos?

Puede convertir la fecha/hora en segundos y hacer operaciones aritméticas con los segundos para obtener el valor dentro de un intervalo de reloj de 15 minutos:

> =3;

Lo anterior usa to_seconds() . En versiones anteriores de MySQL, puede usar unix_timestamp() .

Obtener cualquier intervalo de 15 minutos es más desafiante. Puedes expresar la consulta como:

seleccione t1.*, cuente(*) como numTransactions from tran t1 únase a tran t2 en t1.merchant_id =t2.merchanti_d y t1.card_id =t2.card_id y t2.tran_dt>=t1.tran_dt y t2. tran_dt =3; 

El rendimiento de esta consulta puede ser problemático. Un índice en trans(card_id, mercantil_id, tran_dt) debería ayudar mucho.