SUM et GROUP BY

Nouveau WRInaute
Bonjour,

Je souhaiterai pouvoir trier par ordre décroissant (du plus grand au plus petit) la somme d'un champ d'une table. J'ai lu sur cette page http://mysql.com/doc/refman/5.0/fr/group-by-modifiers.html que l'on pouvait grouper les champs d'une table grâce à GROUP BY mais comment faire pour afficher du plus grand au plus petit la somme de plusieurs champs ?

Par exemple la requête ci-dessous trie les années, mais comment faire pour trier du plus grand au plus petit le "sum_profit" ?
mysql> SELECT year, country, product, SUM(profit) AS sum_profit
-> FROM sales
-> GROUP BY year, country, product;
+------+---------+------------+-------------+
| year | country | product | sum_profit |
+------+---------+------------+-------------+
| 2000 | Finland | Computer | 1500 |
| 2000 | Finland | Phone | 100 |
| 2000 | India | Calculator | 150 |
| 2000 | India | Computer | 1200 |
| 2000 | USA | Calculator | 75 |
| 2000 | USA | Computer | 1500 |
| 2001 | Finland | Phone | 10 |
| 2001 | USA | Calculator | 50 |
| 2001 | USA | Computer | 2700 |
| 2001 | USA | TV | 250 |
+------+---------+------------+-------------+

Si l'on rajoute un « ORDER BY sum_profit DESC » après le GROUP BY ça ne marche pas non plus !

D'avance merci pour vos réponses.
 
WRInaute discret
Salut,

je ne suis pas pro en sql mais je crois que tu ne peux pas mettre plusieurs "trucs" avec SUM. Je l'avais lu dans un autre tuto

donc

mysql> SELECT year, country, product, SUM(profit) AS sum_profit
ne marche pas. Il faudrait faire d'abord un
mysql> SELECT = SUM(profit) AS sum_profit WHERE...

puis dans un second <?php ... ?> mysql> : SELECT year, country, product, etc...

essaies et dis moi si ça marche. Moi, perso, je décompose en plusieurs <?php...?> et ça fonctionne

J'espère ne pas dire trop de conneries au yeux des pros de ce forum
 
Nouveau WRInaute
Merci animus pour ta réponse.

Théoriquement la requête ci-dessous doit fonctionner car je l'ai prise sur le tutoriel de mysql.com

SELECT year, country, product, SUM(profit) AS sum_profit
-> FROM sales
-> GROUP BY year, country, product;

J'ai essayé pas mal de solution pour essayer de trier du plus grand résultat au plus petit le "sum_profit" mais ça ne marche pas, même en rajoutant après le GROUP BY un « ORDER BY sum_profit DESC » , ça ne marche pas non plus, quelqu'un a-t-il une idée ?
 
Discussions similaires
Haut