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

SQL Oracle Discussion :

Jointure requête imbriquée


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 44
    Points : 38
    Points
    38
    Par défaut Jointure requête imbriquée
    bonjour
    je cherche a trouver le pourcentage de la somme des valeur article pour chaque code GU d'une société identifié par centrerc,registrecommerce,annee par rapport a la somme des valeur articles de la meme societé quelque soit le code GU.

    donc j'ai precedé ainsi

    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    s1.centrerc, s1.registrecommerce, s1.annee, s1.codegu,   
      sum(s1.valeurarticle) as som_gu, 
      ((sum(s1.valeurarticle) / (
               SELECT sum(s2.valeurarticle)
               FROM source_dum s2
               where s1.centrerc = s2.centrerc 
          and s1.registrecommerce = s2.registrecommerce 
          and s1.annee=s2.annee
              group by s2.centrerc, s2.registrecommerce, s2.annee
         )) * 100) as pourcentage
    from  source_dum s1
    where s1.centrerc = s2.centrerc 
      and s1.registrecommerce = s2.registrecommerce 
      and s1.annee = s2.annee
    group by s1.centrerc, s1.registrecommerce, s1.annee, s1.codegu;

    le probleme c'est que au sein de la requete imbriqué il ne connai pas s1
    il me retoure la somme total de toute les societé ,il ne prend pas la jointure en considération ,aidez moi please,ou bien si vous aves une autre façon de faire

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 036
    Points
    34 036
    Billets dans le blog
    14
    Par défaut
    Décomposons le problème et ta requête...

    1) Requête de cette partie :
    somme des valeur article pour chaque code GU d'une société identifié par centrerc,registrecommerce,annee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s1.centrerc, s1.registrecommerce, s1.annee, s1.codegu,   
      sum(s1.valeurarticle) AS som_gu
    FROM  source_dum s1
    GROUP BY s1.centrerc, s1.registrecommerce, s1.annee, s1.codegu
    2) Requête de cette partie :
    somme des valeur articles de la meme societé quelque soit le code GU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s2.centrerc, s2.registrecommerce, s2.annee,   
      sum(s2.valeurarticle) AS som_tot
    FROM  source_dum s2
    GROUP BY s2.centrerc, s2.registrecommerce, s2.annee;
    3) Faisons une jointure entre les deux pour calculer le pourcentage :
    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
    18
    SELECT t1.centrerc, t1.registrecommerce, t1.annee, t1.codegu,
      t1.som_gu, 
      100 * t1.som_gu / t2.som-tot AS pourcentage
    FROM (
      SELECT s1.centrerc, s1.registrecommerce, s1.annee, s1.codegu,   
        sum(s1.valeurarticle) AS som_gu
      FROM  source_dum s1
      GROUP BY s1.centrerc, s1.registrecommerce, s1.annee, s1.codegu
    ) AS t1
    INNER JOIN (
      SELECT s2.centrerc, s2.registrecommerce, s2.annee,   
        sum(s2.valeurarticle) AS som_tot
      FROM  source_dum s2
      GROUP BY s2.centrerc, s2.registrecommerce, s2.annee
    ) AS t2 ON t1.centrerc = t2.centrerc
      AND t1.registrecommerce = t2.registrecommerce
      AND t1.annee = t2.annee
    ORDER BY t1.centrerc, t1.registrecommerce, t1.annee, t1.codegu
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    Merci pour votre réponse ,j'ai essayé avec votre code mais ça me retourne
    SQL Error: ORA-00933: la commande SQL ne se termine pas correctement
    00933. 00000 - "SQL command not properly ended"

    J'ai pas pu localiser d'où ça vient le prbl ????

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 380
    Points
    18 380
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      SELECT centrerc, registrecommerce, annee, codegu,   
             sum(valeurarticle) as som_gu,
             sum(valeurarticle) * 100
             / sum(valeurarticle) over(partition by centrerc, registrecommerce, annee) AS pourcentage
        FROM source_dum
    GROUP BY centrerc, registrecommerce, annee, codegu;
    N'oubliez pas de toujours préciser votre SGBD et sa version dans les demandes initiales.

Discussions similaires

  1. Update, Jointures et requête imbriqué
    Par bleuerouge dans le forum Développement
    Réponses: 1
    Dernier message: 14/01/2010, 14h49
  2. jointure entre requête imbriquée et requête parente
    Par speedev dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/03/2009, 11h24
  3. Jointures ou requêtes imbriquées ?
    Par Evocatii dans le forum Débuter
    Réponses: 2
    Dernier message: 22/02/2008, 12h56
  4. Transformer requête imbriquée en jointure
    Par Nadoo dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/05/2006, 00h41
  5. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 10h37

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