Group by, order by et count()

mb12fr Messages postés 74 Statut Membre -  
mb12fr Messages postés 74 Statut Membre -
Bonjour,

je voudrais lister par ordre le nombre d'enregistrements issu d'un group by.

La requete suivante ne contient pas le tri

select count(numadh) numadh from suivi group by numadh ;

que je voudrais sur le resultat de count(numadh).

un peu comme suit

select count(numadh) numadh from suivi group by numadh ORDER BY COUNT(NUMADH);

avec en majuscule ce qui ne passe pas.

Une idée qqun ?

Merci de vos réponses.


2 réponses

Tittom Messages postés 422 Statut Membre 128
 
Tu n'as pas précisé sur quel SGBD tu travailles...

Sur Oracle 8.1.5, la forme suivante :
===
select count(auteur) nb_auteur from messages group by auteur order by nb_auteur;
===
... fonctionne.
Je pense qu'en utilisant le nom d'alias que tu as indiqué pour la colonne count(numadh) dans l'order by, c'est-à-dire numadh (pas très explicite comme alias... on ne fait pas la différence avec la colonne d'origine), ca devrait marcher :

===
select count(numadh) numadh from suivi group by numadh order by numadh;
===


Sinon, tu peux essayer qq chose comme :
===
select * from (select count(auteur) nb_auteur from messages group by auteur) order by nb_auteur;
===
... ca marche en tout cas également sur Oracle 8.1.5 (désolé, je n'ai rien d'autre sous la main, et je ne vais pas m'en plaindre ;o)).

Tittom

PS : perso je renommerais ton alias pour y voir plus clair :
===
select count(numadh) nb_adh from suivi group by numadh order by nb_adh;
===
2
mb12fr Messages postés 74 Statut Membre 5
 
C'est bien un manque d'alias.
La ligne ce dessous fonctionne tres bien.

select count(numadh) numadh2, numadh from suivi group by numadh order by numadh2 desc;

Merci de ta réponse.
A+
2