MYSQL - grouper par interval de temps

MYSQL - grouper par interval de temps - SQL/NoSQL - Programmation

Marsh Posté le 08-03-2010 à 14:57:44    

Bonjour,
 
Je cherche a grouper par interval de temps les données d'une table :
j'ai une table avec un enregistrement a chaque fois que quelqun badge pour ouvrir une porte.  
 
voici la table :
 
porte | badge | date
2 | 342 | 2010-02-02 12:20:38
2 | 456 | 2010-02-02 12:22:12
2 | 722 | 2010-02-02 12:30:40
2 | 722 | 2010-02-02 12:31:08
2 | 722 | 2010-02-02 12:31:35
2 | 309 | 2010-02-02 13:10:58
2 | 456 | 2010-02-02 14:56:19
2 | 722 | 2010-02-02 18:11:55
 
je cherche une solution pour avoir tous les numéros de badge qui ont ouvert la porte sans avoir de "doublon" (ne pas faire apparaitre plusieurs fois un même numéro de badge si il a été utilisé plusieurs fois en moins de 10 min par exemple)
 

Reply

Marsh Posté le 08-03-2010 à 14:57:44   

Reply

Marsh Posté le 08-03-2010 à 16:48:08    

c'est quoi ton sgbd et le type de ta colonne date? c'est bien un type date qqconque et pas un varchar?

 

Edit: désolé j'avais pas lu le titre du topac. ca devrait marcher pareil sous mysql...

 

en gros il te faut trouver la fonction qui transforme ta date en un dénominateur de ton intervalle, par exemple pour des intervalles d'une heure (sous oracle):

Code :
  1. to_char(sysdate, 'DD-Mon-YYYY HH24')

et du coup tu dois pouvoir faire

Code :
  1. SELECT porte, DISTINCT badge, to_char(sysdate, 'DD-Mon-YYYY HH24') AS interval
  2. FROM ta_table
  3. GROUP BY interval
 

par contre ce genre de code c'est pour créer arbitrairement des intervalles. si tu veux que ce soit toutes les occurrences qui se suivent à moins de 10mn qui soient regroupées, ca ne marchera pas et ca sera bcp plus compliqué (faisable en traitement applicatif plutot)


Message édité par pataluc le 08-03-2010 à 16:49:20
Reply

Marsh Posté le 08-03-2010 à 17:04:55    

pour mysql, avec des intervalles de temps de 10mn, tu peux faire ca:

Code :
  1. SELECT badge, porte, left(DATE_FORMAT(date,"%Y%m%d%H%i" ), 11) as intervalle
  2. FROM table t
  3. group by i

Reply

Marsh Posté le 10-03-2010 à 10:22:33    

Merci pour ta réponse, j'ai mis en place des regroupement de 10min, quand j'aurai plus de temps je me lancerai dans une application pour avoir des résultats plus juste.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed