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

  1. 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
  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