Bonjour à tous,
Je souhaite détecter des événements qui ont eus lieu plus de X fois sur une période de Y minutes.
Donc compter des enregistrements sur des périodes glissantes de Y minutes.
Quelqu'un a-t-il une idée ?
[Edit 1]
Requête de base :
Manque plus qu'à afficher le nombre d'apparitions de l'incident et le datetime de début et de fin. Un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT * FROM Incidents I1 WHERE (SELECT COUNT(*) FROM Incidents I2 WHERE I2.DateHeure BETWEEN I1.DateHeure AND ADDTIME(I1.DateHeure,"12:00:00") )>3
Entre le 19/05/2013 21:00 et le 20/05/2013 09:00 l'événement X est apparu Y fois.
Et supprimer les doublons...
[Edit 2]
Petite amélioration :
Reste les doublons ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT I1.IDIncidents, I1.Libellé, I1.DateHeure AS 'Entre le', ADDTIME(I1.DateHeure,"12:00:00") AS 'et le', CONCAT(COUNT(*),' fois') AS 'Nb apparitions' FROM Incidents I1 INNER JOIN Incidents I2 ON ( I2.DateHeure BETWEEN I1.DateHeure AND ADDTIME(I1.DateHeure,"12:00:00") AND I2.Libellé=I1.Libellé ) GROUP BY I1.IDIncidents HAVING COUNT(*)>3
Partager