IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

selection du champ le plus reporté


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut selection du champ le plus reporté
    Bonjour,

    je cherche une commande sql afin de trouver le champ le plus reporté dans ma table.

    j'ai une table d'etudiants appartenant à des groupes différents, je cherche à selectionner le numero de groupe qui comporte le plus d'etudiants.

    comment dois je faire?

    merci par avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    En admettant que l'on doive compter le nombre d'étudiants distincts pour chaque groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Groupe, count(DISTINCT Etudiant) AS NbEtudiants
    FROM TableEtudiants
    GROUP BY Groupe
    A partir de là, certains SGBD (vous n'avez pas précisé le votre) offrent des facilités comme TOP ou LIMIT, et en ordonnant par NbEtudiants decroissants, vous pouvez ne demander que la première ligne.
    Ceci dit, pour le cas plusieurs groupes atteignent ce maximum, il est préférable de faire une autojointure pour récupérer tous les groupes qui atteignent ce max.
    N'hésitez pas à nous préciser votre SGBD et la structure de votre table.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut
    merci pour votre réponse en fait il s'agit d'une base ibm db2
    ca marche

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut
    en fait le problème n'est pas exactement résolu
    je cherche la solution avec l'autojointure,
    beaucoup de groupes ont le meme nombre d'etudiants
    merci d'avance

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 14
    Par défaut
    voici la structure de la table

    cf pièce jointe
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Je te propose deux manières de faire, à adapter à ta structure car je ne peux pas ouvrir ta pièce jointe.

    Jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SELECT etu.Groupe, etu.NbEtudiants
    FROM
    (
     SELECT Groupe, count(DISTINCT Etudiant) AS NbEtudiants
     FROM  etu
     GROUP BY Groupe
    ) etu
    JOIN (
          SELECT max(NbEtudiants) as NbEtudiants
    	  FROM (
    	        SELECT Groupe, count(DISTINCT Etudiant) AS NbEtudiants
     			FROM  etu
     			GROUP BY Groupe
    		   )
    	 ) NbMax
    	 ON etu.NbEtudiants = NbMax.NbEtudiants
    Clause having :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT Groupe, count(DISTINCT Etudiant) AS NbEtudiants
    FROM  etu
    GROUP BY Groupe
    HAVING count(DISTINCT Etudiant) = (
                                       SELECT max(NbEtudiants) as NbEtudiants
                                       FROM 
                                       (
                                        SELECT Groupe, count(DISTINCT Etudiant) AS NbEtudiants
                                        FROM  etu
                                        GROUP BY Groupe
                                       )
                                     )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR 8.5] filtrer avec l'expert selection un champs calculé!!
    Par abdel6908 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 14/06/2005, 10h30
  2. probleme de champs sur crystal report 8.5
    Par abdel6908 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/05/2005, 13h50
  3. Ajouter un champs dans un Report
    Par nora_ora dans le forum Reports
    Réponses: 7
    Dernier message: 09/12/2004, 17h24
  4. [Performance] RecordCount ou select Count(champ) ?
    Par shwin dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 28/09/2004, 17h37
  5. [CR] Comment trouver un champs dans un report ??
    Par Madduck dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 18/09/2003, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo