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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Grouper selon un intervalle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Grouper selon un intervalle

n°1376741
DeLoVaN
Posté le 29-05-2006 à 15:29:45  profilanswer
 

Bonjour a tous.
 
J'ai un probleme au niveau d'une requete SQL.
 
Je dois, dans une table, faire des opérations sur certains tuples, et ceci groupés selon un certain critère. Ce critère est qu'il faut les grouper selon un intervalle, c'est à dire que je groupe sur un datetime, mais je dois aussi grouper si deux enregistrement se font sur une période de dix minutes par exemple. Je sais pas si je me suis bien expliqué par contre :S.
 
Merci de vos réponses.

mood
Publicité
Posté le 29-05-2006 à 15:29:45  profilanswer
 

n°1376752
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-05-2006 à 15:39:16  profilanswer
 

C'est possible d'avoir un petit bout de la table et de ta requête à l'heure actuelle?
Là je m'embrouille un peu entre le champs 7 et le champs 12 ...

n°1376769
DeLoVaN
Posté le 29-05-2006 à 15:52:13  profilanswer
 

Huhu, oui, sans problemes, meme si elle est pas très compliquée
 

Code :
  1. +---------------------+---------------------+
  2. | id_transaction_jour | date_transaction    |
  3. +---------------------+---------------------+
  4. | 1                   | 2006-05-28 18:49:40 |
  5. | 2                   | 2006-05-28 19:12:31 |
  6. | 3                   | 2006-05-28 19:26:39 |
  7. | 4                   | 2006-05-28 20:00:33 |
  8. | 5                   | 2006-05-28 20:16:15 |
  9. | 6                   | 2006-05-28 21:12:07 |
  10. | 7                   | 2006-05-28 22:10:14 |
  11. | 8                   | 2006-05-28 02:55:41 |
  12. | 9                   | 2006-05-28 10:08:31 |
  13. | 10                  | 2006-05-28 16:24:00 |
  14. | 11                  | 2006-05-28 03:18:45 |
  15. | 23                  | 2006-05-28 20:00:40 |
  16. | 24                  | 2006-05-28 08:23:08 |
  17. | 25                  | 2006-05-28 08:46:17 |
  18. | 26                  | 2006-05-28 09:50:35 |
  19. | 27                  | 2006-05-28 11:48:20 |
  20. | 28                  | 2006-05-28 16:06:40 |
  21. | 29                  | 2006-05-28 19:15:00 |
  22. | 30                  | 2006-05-28 20:48:09 |
  23. +---------------------+---------------------+
  24. 30 rows in set (0.00 sec)


 
En gros j'aimerais grouper par tranche de dix minutes;

n°1376776
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-05-2006 à 15:57:13  profilanswer
 

select selon une précision de 10 minutes (regarde les fonctions de date) et group by ce truc là.
 
ps: attention, un group by ne porte que sur des fonction d'agrégation (count, sum, etc.)

n°1376786
DeLoVaN
Posté le 29-05-2006 à 16:05:41  profilanswer
 

Merci de ta réponse, mais je n'ai rien trouvé au niveau de la précision d'un intervalle de temps là dessus : http://dev.mysql.com/doc/refman/4. [...] tions.html
Peut etre en manipulant un date_add ?

n°1376796
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-05-2006 à 16:20:25  profilanswer
 

3eme ligne de ton lien:

Citation :

Here is an example that uses date functions. The following query selects all rows with a date_col value from within the last 30 days:
 
mysql> SELECT something FROM tbl_name
    -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;


:o
 
edit:  
Après ça va quand même pas être facile, a mon avis tu as être obligé de jointer la table sur elle même...


Message édité par anapajari le 29-05-2006 à 16:22:55
n°1376855
DeLoVaN
Posté le 29-05-2006 à 17:24:57  profilanswer
 

Je vais chercher de ce coté, merci.

n°1376865
mrbebert
Posté le 29-05-2006 à 17:31:14  profilanswer
 

Juste une piste (attention les yeux, c'est pas très élégant :whistle: ) :
SELECT COUNT(*)
FROM la_table
GROUP BY substr(date_transaction, 0, 15)
 
Je ne me rappelle plus exactement de la syntaxe du substr(). L'idée, c'est de grouper sur la première partie de la date, jusqu'au chiffre des dizaines de minutes [:figti]


Message édité par mrbebert le 29-05-2006 à 17:31:28
n°1376873
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-05-2006 à 17:40:19  profilanswer
 

mouais :D
 
ça devrait marcher, mais comme tu dis, attention les mirettes ;)


Message édité par Arjuna le 29-05-2006 à 17:40:27
n°1376874
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-05-2006 à 17:41:07  profilanswer
 

ceci dit, ça revient au même qu'une syntaxe plus sexy (et sémantiquement plus correcte) ;)

mood
Publicité
Posté le 29-05-2006 à 17:41:07  profilanswer
 

n°1376877
anapajari
s/travail/glanding on hfr/gs;
Posté le 29-05-2006 à 17:43:24  profilanswer
 

ça marche pas forcément regarde j'ai  
- un enregistrement a 10h09
- un enregistrement a 10h11
le substring est différent pour les deux mais leur intervalle est de moins de 10 minutes [:spamafote]
 
En fait ça dépend vraiment de ce que cherche à obtenir delovan

n°1376886
Arjuna
Aircraft Ident.: F-MBSD
Posté le 29-05-2006 à 17:51:07  profilanswer
 

et si t'as des hits toutes les 2 minutes (à vitam éternam <= ça s'écrit pas comme ça, je sais), tu fais comment ?
 
t'es obligé à un moment de fixer tes regroupements...
 
ou alors le critère de "date" n'est pas suffisant pour regrouper tes lignes... t'aurais pas une notion de "session" ?


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

  Grouper selon un intervalle

 

Sujets relatifs
grouper et compter les mots d'un texteIntervalle de temps bis
grouper 2 queryproblème de Date lorsque l'intervalle est à cheval sur 2 mois...
Flash : Programmer un intervalle d'actionsgrouper les milliers
requête d'intervalle de temps, pb qd vient la fin du mois !Intervalle de temps requete SQL
Executer un script à intervalle de temps régulier sans être gourmandDoit t'on grouper tous les utilisateur dans la même table ?
Plus de sujets relatifs à : Grouper selon un intervalle


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)