Trier les données avec SUM()

Nouveau WRInaute
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.
 
WRInaute occasionnel
SELECT SUM(evolution_mensuelle) AS sum_evol_mensuelle, num ... GROUP BY sum_evol_mensuelle ORDER BY sum_evolution_mensuelle DESC;
 
Nouveau WRInaute
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.
 
WRInaute occasionnel
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.
 
WRInaute impliqué
Salut,

Sinon tu aurais pu écrire comme ceci aussi :

Code:
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+
 
WRInaute impliqué
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
 
Discussions similaires
Haut