Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2875 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MYSQL - grouper par interval de temps

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MYSQL - grouper par interval de temps

n°1971975
hutarios
Posté le 08-03-2010 à 14:57:44  profilanswer
 

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)
 

mood
Publicité
Posté le 08-03-2010 à 14:57:44  profilanswer
 

n°1972023
pataluc
Posté le 08-03-2010 à 16:48:08  profilanswer
 

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
n°1972034
pataluc
Posté le 08-03-2010 à 17:04:55  profilanswer
 

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

n°1972526
hutarios
Posté le 10-03-2010 à 10:22:33  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MYSQL - grouper par interval de temps

 

Sujets relatifs
[Easyphp5.1.3] probleme connexion mysql en localhsotArreter les requêtes ayant un temps d'exécution trop long
fixer le temps limite d'exécution du .batProbleme lors de l installation de MySQL Server 4.1
realisation d'un jeu temps réel genre "Uno"[Résolu] Faire plusieurs requetes mysql en meme temps
Eviter les Injections mysqlJ'ai peu de temps, je peux etre CDP sur J2EE comment ?
Mysql : copier un champ vers un autre sauf s'il existe déjà 
Plus de sujets relatifs à : MYSQL - grouper par interval de temps


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR