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 :

Tutoriel sur les GROUP BY : exemple incompris


Sujet :

Langage SQL

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut Tutoriel sur les GROUP BY : exemple incompris
    Bonjour,

    Je suis en train de lire un tutoriel de dvp sur les GROUP BY, et l'exemple 5 me laisse perplexe.
    Je suppose qu'il s'agit de quelque chose de tout bête, mais... qui m'échappe.

    En effet, d'après l'exemple 3, la chambre 1 a eu 558 nuités durant l'année 1999 ; et d'après l'exemple 4, sa capacité totale est de 1095 nuités. L'exemple 5 indique alors que son taux d'occupation sur cette période est de 65.29%.
    Toutefois, je me serai attendu à un taux d'occupation de 100*558/1095 = 50.96%....

    Dans la mesure où l'exécution de ces trois requêtes sur les données d'exemple, me retourne bien les résultats du tutoriel, j'en déduis qu'il y a quelque chose que j'interprète de travers, mais je n'arrive pas à mettre le doigt dessus.

    Pourriez vous m'indiquer ce qui m'échappe ?

    Je vous remercie par avance.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 073
    Points
    28 073
    Par défaut
    Le taux d'occupation est bien de 50.96% et la requete donnée en exemple 5 est apparemment fausse.

    Le soucis vient, je pense, de la façon dont sont regroupées les 2 requêtes. En effet, il s'agit de jointures sur des requêtes avec agrégations donc une jointure sur des données virtuelles ce qui peut pervertir le résultat.

    Dans ce genre de situation, il faut bien faire attention à faire la jointure sur les données réelles et faire l'agrégation après. Il faut aussi faire attention à ce que les valeurs nulles soient prises en compte (en les remplaçant par 0 par exemple) si leurs présence est significatives, sinon les lignes correspondantes seront ignorées par l'agrégation.

    Un exemple de requete qui marche :
    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 (100 * SUM(CAST(CHB_PLN_CLI_NB_PERS AS FLOAT)) / 
           SUM(CAST(CHB_COUCHAGE AS FLOAT))) 
                 AS TAUX_OCCUPATION_POURCENT,
                 CHB_ID 
    FROM (
      SELECT COALESCE(P.CHB_PLN_CLI_NB_PERS,0) AS CHB_PLN_CLI_NB_PERS,
               COALESCE(C.CHB_COUCHAGE,0) AS CHB_COUCHAGE,
                     C.CHB_ID 
      FROM T_CHAMBRE C
      CROSS JOIN T_PLANNING PG
      LEFT OUTER JOIN TJ_CHB_PLN_CLI P ON C.CHB_ID = P.CHB_ID AND P.PLN_JOUR=PG.PLN_JOUR
      WHERE PG.PLN_JOUR BETWEEN '1999-01-01' AND '1999-12-31'
    ) T
    GROUP BY CHB_ID
    ORDER BY CHB_ID
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 188
    Points
    188
    Par défaut
    Merci pour ces éclaircissements !

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

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. Tutoriel sur les arbres
    Par emidelphi77 dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2005, 23h09
  3. Théorie sur les groupes et les ensembles
    Par grav dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/02/2005, 18h24
  4. Aide sur les groupes (ADO)
    Par portu dans le forum QuickReport
    Réponses: 3
    Dernier message: 18/08/2004, 16h13

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