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 :

MAX d'un COUNT


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut MAX d'un COUNT
    Bonjour à tous,

    Alors voila j'ai un problème qui me hante.
    C'est pour un projet de BTS et la j'avoue bloquer méchamment.

    Bien j'ai une requète a faire qui demande "d'afficher les pannes les plus Fréquentes". (photo de ma base avec la requète: http://img182.imageshack.us/img182/5...ojetbddfz4.jpg) Je me suis donc lancé dans le MAX d'un COUNT qui va servir à afficher le libellé de la panne. Sauf que je ne sais pas comment procéder. J'ai essayé de faire un MAX(COUNT(NumIntervention)) mais apparement la syntaxe n'est pas bonne ^_^.

    Donc je vous demande de l'aide si possible.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    On peut avoir la requete que tu as testé et le message d'erreur renvoyé?

    Merci

    Michel

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 805
    Points
    30 805
    Par défaut
    Tu ne peux pas faire un MAX(COUNT(*)) en une seule fois, il faut passer par une table dérivée (requête utilisée comme une table)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  MAX(cnt)
    FROM    (   SELECT  groupe
                    ,   COUNT(*)
                FROM    matable
                GROUP BY groupe
            )   AS table_derivee
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Alors pour le moment j'ai fais une premiere requete qui fonctionne, me donnant le nombre de panne, par type de panne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) AS NumIntervention, CodePanne
    FROM INTERVENTIONS
    GROUP BY CodePanne;
    Qui me donne comme résultat :http://img175.imageshack.us/img175/2...quente1aq6.png

    J'ai essayé la requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT MAX(NumIntervention)
    FROM 
    (SELECT COUNT(*) AS NumIntervention, CodePanne
    FROM INTERVENTIONS
    GROUP BY CodePanne)
    AS NumIntervention;
    Qui me donne bien le MAX de NumIntervention mais dans une collonne Expr1000 Et si sans CodePanne:http://img143.imageshack.us/img143/2...quente2ut0.png

    Si je rajoute CodePanne (pour afficher le cade de la panne associé) dans mon premier SELECT, j'ai une erreur : http://img241.imageshack.us/img241/5...requeteyy6.png

    Donc maintenant je voudrais, pour afficher la panne la plus fréquente, faire un max du résultat et afficher le libellé de la panne.

    Je continu de chercher..
    Merci

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bon voila ou j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  COUNT(I.CodePanne) AS NBIntervention, I.CodePanne, Libellé
    FROM INTERVENTIONS AS I, PANNES AS P
    WHERE P.CodePanne=I.CodePanne
    GROUP BY I.CodePanne, Libellé
    ORDER BY 1 DESC;
    Il faut maintenant que j'arrive a sélectionner la première ligne qui me donnera la panne la plus fréquente.

    J'ai maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT MAX (NBIntervention) AS NBIntervention2
    FROM
    (
    SELECT  COUNT(I.CodePanne) AS NBIntervention, I.CodePanne, Libellé
    FROM INTERVENTIONS AS I, PANNES AS P
    WHERE P.CodePanne=I.CodePanne
    GROUP BY I.CodePanne, Libellé
    ORDER BY 1 DESC
    )
    ;
    Mais pour afficher le libellé associé là... je ne sais pas comment faire.

    Encore un peu d'aide svp?
    Je continu mes recherches...

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Sans faire le MAX j'arrive à afficher le libellé des Pannes.
    Mais avec je n'arrive pas... Comment faire pour n'avoir que cette première ligne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NBIntervention AS NBIntervention2, Libellé
    FROM
    (
    SELECT  COUNT(I.CodePanne) AS NBIntervention, I.CodePanne, Libellé
    FROM INTERVENTIONS AS I, PANNES AS P
    WHERE P.CodePanne=I.CodePanne
    GROUP BY I.CodePanne, Libellé
    ORDER BY 1 DESC
    )
    ;
    Help

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    J'ai maintenant une question.

    Je me retrouve à essayer tant bien que mal à faire ce fichu MAX de COUNT et me retrouve avec :

    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
    SELECT MAX (NBIntervention2) AS NBIntervention3
    FROM
    (
    SELECT NBIntervention AS NBIntervention2, Libellé
    FROM
    (
    SELECT  COUNT(I.CodePanne) AS NBIntervention, I.CodePanne, Libellé
    FROM INTERVENTIONS AS I, PANNES AS P
    WHERE P.CodePanne=I.CodePanne
    GROUP BY I.CodePanne, Libellé
    ORDER BY 1 DESC
    )
    )
    GROUP BY NBIntervention2
    ;
    Le problème est qu'il ne me donne pas mon MAX désiré. Je suppose que cela vient du GROUP BY.

    Si quelqu'un a une solution je suis preneur .
    Merci

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bon voila j'ai enfin trouvé !!

    j'ai fais une selection de la première ligne et mon code est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT TOP 1 *
    FROM
    (SELECT NBIntervention AS NBIntervention2, Libellé
    FROM
    (
    SELECT  COUNT(I.CodePanne) AS NBIntervention, I.CodePanne, Libellé
    FROM INTERVENTIONS AS I, PANNES AS P
    WHERE P.CodePanne=I.CodePanne
    GROUP BY I.CodePanne, Libellé
    ORDER BY 1 DESC
    )
    )
    ;
    C'est l'équivalent du LIMIT 1 (qui n'est pas utilisable sous acces ).
    Bon j'ai fini mes requêtes je vous laisse .

    Bonne journée a tous et merci de l'aide, je suis happy hihi

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

Discussions similaires

  1. [SQL Server] select max d'un count ?
    Par chess75 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/08/2017, 14h38
  2. Max d'un count avec alias
    Par bsquare09 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 18/11/2008, 14h07
  3. Sélectionner le Max d'un COUNT
    Par athos7776 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/07/2007, 22h54
  4. Réponses: 1
    Dernier message: 01/05/2007, 17h38
  5. [MYSQL]le max d'un count ?
    Par malotte dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/01/2006, 20h14

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