Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2010, 12h39   #1
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 277
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 277
Points : 2 323
Points : 2 323
Par défaut Regroupement sur un champ DATETIME

Bonjour,

existe t-il une méthode pour regrouper des données par tranches de X minutes ou X heures sur un champ de type datetime ?

J'ai testé 2-3 choses avec DATE_FORMAT, EXTRACT...sans résultat.

Merci

EDIT:

j'ai fais ceci en dernier test :

Code sql :
1
2
3
4
 
SELECT *
FROM maTable
GROUP BY EXTRACT(MINUTE FROM date_heure ) + INTERVAL '5' MINUTE

-> pas d'erreur mais résultats pas bons
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h39   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 277
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 277
Points : 2 323
Points : 2 323
Je m'en suis sorti comme ca :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT symbole, cours, SUM(quantite), date_format(date_heure, '%Y-%m-%d %H') AS date,
(CASE 
    WHEN (MINUTE( date_heure ) < 15) THEN "00-15"
    WHEN (MINUTE( date_heure ) < 30) THEN "15-30" 
    WHEN (MINUTE( date_heure ) < 45) THEN "30-45" 
    WHEN (MINUTE( date_heure ) < 60) THEN "45-60" 
END) AS inter
FROM historique
GROUP BY symbole, date, inter
ORDER BY symbole, date DESC

me reste plus qu'à définir dynamiquement les intervales par php maintenant
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h42   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 932
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 932
Points : 18 121
Points : 18 121
Envoyer un message via MSN à CinePhil
Regarde dans cette discussion récente, je crois que le problème posé est similaire au tien.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h56   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 277
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 277
Points : 2 323
Points : 2 323
Merci. Exact cela y ressemble fort sauf que (sauf erreur de ma part), le regroupement se fait par heure avec un group by sur un date_format.

Dans mon cas, je souhaites ventiler chaque heure en tranches dynamiques via php d'où mon CASE pour le moment statique de séparation de chaque heure en 1/4 d'heure.

Pour résumer, ma requête est fonctionnelle, me reste plus qu'à la construire dynamiquement par php en 60/X tranches avec X=regroupement par minutes. En gros, si l'utilisateur rentre 20, j'aurais 3 tranches de 20 minutes
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h10.


 
 
 
 
Partenaires

Hébergement Web