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 :

Requête : fonction d'agrégation


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut Requête : fonction d'agrégation
    Bonjour,

    Lors de ma dernière colle j'ai séché sur la dernière requête :

    On a une relation CirEtape décrivant les étapes d'un circuit touristique, avec les champs suivants :

    NC : numéro du circuit
    RANG : rang de l'étape dans le circuit (1ère, 2ème...)
    VILET : nom de la ville étape
    NBJ : durée du séjour dans la ville étape

    NC | RANG | VILET | NBJ
    ----------------------------
    1 | 1 | Londres | 2
    2 | 1 | Londres | 3
    2 | 2 | Cork | 2
    2 | 3 | Venise | 4
    3 | 1 | Paris | 5

    On demande de récupérer le numéro et durée du circuit de durée maximale, quelqu'un peut-il m'éclairer ?

    Merci par avance !

  2. #2
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bonjour,
    Si je comprends bien c'est juste ça non ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select NC, NBJ
      from 
        CirEtape
        inner join (select max(NBJ) NBJ from CirEtape) lemax on CirEtape.NBJ=lemax.NBJ;
    Attention : rien ne dit que cela ne ramène qu'un seul NC

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut
    Je ne crois pas car la durée maximale en question est en fait la somme des NBJ du même circuit...mais merci de ton aide !

    La requête suivante est-elle correcte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nc, SUM(nbj) duree
    FROM CirEtape
    GROUP BY nc
    HAVING duree = MAX(SELECT SUM(nbj) FROM CirEtape GROUP BY nc);

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    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 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Citation Envoyé par j0o0
    La requête suivante est-elle correcte ?
    Comme ça, ce serait mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT nc
     , SUM(nbj) AS duree
    FROM CirEtape
    GROUP BY nc
    HAVING duree = (SELECT MAX(duree) 
      FROM (SELECT SUM(nbj) AS duree 
        FROM CirEtape GROUP BY nc
        ) AS tot
      )
    ;

  5. #5
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut
    Ok merci beaucoup !

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

Discussions similaires

  1. [AC-2007] erreur requête fonction d'agrégat
    Par Rifaat dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/06/2012, 09h38
  2. Réponses: 2
    Dernier message: 16/05/2012, 09h48
  3. erreur requête fonction agrégat
    Par agnaou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2009, 03h35
  4. Message d'erreur requête fonction agrégat
    Par luke80 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 06/04/2008, 17h58
  5. Erreur dans requête : blabla fonction d'agrégat
    Par The_Super_Steph dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/06/2007, 10h55

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