Trier les données avec SUM()

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

marcuscollins
Nouveau WRInaute
 
Messages: 36
Inscription: Mar Aoû 02, 2005 8:28

Trier les données avec SUM()

Message le Ven Juil 21, 2006 10:18

Bonjour,

Je chercher à trier du plus grand au plus petit des données de ma table qui ont été aditionné au préalable avec la fonction SUM(), quelqu'un peut-il m'aider ?

Voici ma requête mysql qui ne marche pas :
SELECT SUM(evolution_mensuelle), num, date FROM evolution_prix WHERE date LIKE '2006%' GROUP BY evolution_mensuelle ORDER BY evolution_mensuelle DESC;


Ca m'affiche bien la somme de la colonne "evolution_mensuelle" pour l'année 2006 mais cette somme n'est pas trié du plus grand au plus petit, c'est trié n'importe comment !

Quelqu'un a-t-il une solution ?

D'avance merci.


ltressens
WRInaute passionné
WRInaute passionné
 
Messages: 551
Inscription: Ven Avr 02, 2004 14:52

Message le Ven Juil 21, 2006 10:27

SELECT SUM(evolution_mensuelle) AS sum_evol_mensuelle, num ... GROUP BY sum_evol_mensuelle ORDER BY sum_evolution_mensuelle DESC;

marcuscollins
Nouveau WRInaute
 
Messages: 36
Inscription: Mar Aoû 02, 2005 8:28

Message le Ven Juil 21, 2006 10:41

Merci ltressens pour ta réponse.

Ta requête n'était pas tout à fait exacte, car apparement on ne peut pas regrouper "sum_evol_mensuelle" avec GROUP BY, il faut en fait laisser le nom du champ de la table "evolution_mensuelle" dans le GROUP BY, ce qui donne :
SELECT SUM(evolution_mensuelle) AS sum_evol_mensuelle, num ... GROUP BY evolution_mensuelle ORDER BY sum_evol_mensuelle DESC;


Mais à présent ça fonctionne bien donc merci pour ton aide.


ltressens
WRInaute passionné
WRInaute passionné
 
Messages: 551
Inscription: Ven Avr 02, 2004 14:52

Message le Ven Juil 21, 2006 10:45

Oui pardon, j'ai ecrit tres rapidement.
En effet, le group by porte sur la colonne en base, le order porte sur le sum, donc sur l'alias sum_evol_mensuelle.

Sir Dipp
WRInaute accro
WRInaute accro
 
Messages: 1025
Inscription: Lun Juil 21, 2003 17:53

Message le Ven Juil 21, 2006 10:51

Salut,

Sinon tu aurais pu écrire comme ceci aussi :

Code: Tout sélectionner
SELECT SUM(evolution_mensuelle), num, date FROM evolution_prix WHERE date LIKE '2006%' GROUP BY evolution_mensuelle ORDER BY 1 DESC;


On gagne quelques octets :-P

A+

shrom
WRInaute passionné
WRInaute passionné
 
Messages: 865
Inscription: Lun Juil 05, 2004 22:37

Message le Ven Juil 21, 2006 11:54

En même temps il y a quelques petites inperfections dans la requête:
- date est un mot réservé, il faut donc le quoté
- LIKE '2006%' n'est pas très performant, j'ose espérer que tu utilise le type date propre à ton SGBD, il suffit alors d'utiliser les fonction de date qui seront beaucoup plus rapides qu'un LIKE

spidetra
WRInaute accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

Message le Ven Juil 21, 2006 11:56

...
Dernière édition par spidetra le Ven Aoû 04, 2006 13:13, édité 1 fois.

jarreweb
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 192
Inscription: Ven Sep 12, 2003 8:17

Message le Ven Juil 21, 2006 14:30

pensez à utiliser les fonctions mysql sur les dates
au lieu de date LIKE '2006%' faites plutot YEAR(date)=2006


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités