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

Requêtes MySQL Discussion :

Le maximum d'un count


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Par défaut Le maximum d'un count
    Bonjour,

    Déjà merci de prendre du temps pour mon problème

    Je dois exécuter une requête qui dois m'afficher le ou les propriétaires d'appartements qui possèdent le plus d'appartements.

    Je suis arrivé à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select proNom, count(*) as nombre 
    from proprietaires inner join appartements on proNum=aptPro 
    group by proNom 
    order by nombre desc;
    Je n'arrive pas à prendre le max(count(*)) qui est juste impensable, et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select proNom, count(*) as nombre 
    from proprietaires inner join appartements on proNum=aptPro 
    group by proNom 
    order by nombre desc limit 1;
    Ne marche pas dans le cas de propriétaires ayant le même nombre d'appartements.

    Merci de votre aide d'avance.
    Cordialement.

  2. #2
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Bonjour.
    tu peux peut être essayer avec HAVING du genre (non vérifié notamment le nommeage de la sous requête)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT proNom, count(*) AS nombre_1
    FROM proprietaires INNER JOIN appartements ON proNum=aptPro 
    HAVING nombre_1 = (SELECT procount(*) AS nombre_2
    FROM proprietaires INNER JOIN appartements ON proNum=aptPro 
    GROUP BY proNom 
    ORDER BY nombre_2 DESC LIMIT 1) AS R0
     
    GROUP BY proNom

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Par défaut
    Salut !
    Pour faire un pseudo max(count(*))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT MAX(y.num)
    FROM ( 
    SELECT COUNT(*) AS num
    FROM TABLE_XXX
    GROUP BY CE_QUE_TU_VEUX_COMPTER
    )y
    Donc tu pourrais essayer (à adapter avec les inner join, ect)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT proNom, max(o.num) AS nombre
    FROM proprietaires a,
    (SELECT aptPro, count(*) as num from appartements group by aptPro) o
    where a.numPro = b.aptPro

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Plusieurs formulations possibles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT proNom, count(*) AS nombre 
    FROM   proprietaires 
           INNER JOIN appartements 
    	         ON proNum=aptPro 
    GROUP  BY proNom 
    HAVING count(*) >= ALL (SELECT count(*) AS nombre 
                            FROM   proprietaires 
                                   INNER JOIN appartements 
    							         ON proNum=aptPro 
                            GROUP BY proNom);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT proNom, count(*) AS nombre 
    FROM   proprietaires 
           INNER JOIN appartements 
    	         ON proNum=aptPro 
    GROUP  BY proNom 
    HAVING count(*) = (SELECT MAX(nombre)
                       FROM   (SELECT proNom, count(*) AS nombre 
                               FROM   proprietaires 
                                      INNER JOIN appartements 
    	                                    ON proNum=aptPro 
                               GROUP  BY proNom) AS T )
    Amais je suis pas sur que MySQL supporte l'opérateur ALL vu qu'il n'est toujours pas au niveau de la norme SQ2 de 1992 !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Maximum user Count
    Par JP.NUAGE dans le forum Firebird
    Réponses: 5
    Dernier message: 25/06/2008, 16h42
  2. [Tableau] taille maximum
    Par vasilov dans le forum C
    Réponses: 15
    Dernier message: 01/08/2003, 10h52
  3. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02
  4. Multiple Count
    Par Antichoc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2003, 11h19
  5. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41

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