Grouper selon un intervalle

Grouper selon un intervalle - SQL/NoSQL - Programmation

Marsh Posté le 29-05-2006 à 15:29:45    

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.

Reply

Marsh Posté le 29-05-2006 à 15:29:45   

Reply

Marsh Posté le 29-05-2006 à 15:39:16    

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 ...

Reply

Marsh Posté le 29-05-2006 à 15:52:13    

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;

Reply

Marsh Posté le 29-05-2006 à 15:57:13    

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.)

Reply

Marsh Posté le 29-05-2006 à 16:05:41    

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 ?

Reply

Marsh Posté le 29-05-2006 à 16:20:25    

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
Reply

Marsh Posté le 29-05-2006 à 17:24:57    

Je vais chercher de ce coté, merci.

Reply

Marsh Posté le 29-05-2006 à 17:31:14    

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
Reply

Marsh Posté le 29-05-2006 à 17:40:19    

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


Message édité par Arjuna le 29-05-2006 à 17:40:27
Reply

Marsh Posté le 29-05-2006 à 17:41:07    

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

Reply

Marsh Posté le 29-05-2006 à 17:41:07   

Reply

Marsh Posté le 29-05-2006 à 17:43:24    

ç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

Reply

Marsh Posté le 29-05-2006 à 17:51:07    

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" ?

Reply

Sujets relatifs:

Leave a Replay

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