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 :

probleme de jointure


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    Par défaut probleme de jointure
    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
     
    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;
    il m'affiche le message d'errur suivant:

    Error starting at line 1 in command:
    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
    Error at Command Line:4 Column:15
    Error report:
    SQL Error: ORA-00979: N'est pas une expression GROUP BY
    00979. 00000 - "not a GROUP BY expression"
    *Cause:
    *Action:
    je ne sais pas ou est l'erreur exactement ,j'ai besoin de votre aide

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    L’erreur se trouve la où elle est signalée à la ligne 4: vous ne pouvez pas mélanger les fonctions aggregate SUM et analytiques SUM over() de cette façon.

  3. #3
    Membre averti
    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
    Par défaut
    vous pouvez me proposer une solution svp

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Comme ceci je pense, à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT
        centrerc,
        registrecommerce,
        annee,
        codegu, 
        sum(valeurarticle) AS som_gu,
        sum(valeurarticle) * 100 / sum(sum(valeurarticle)) over(partition BY centrerc, registrecommerce, annee) AS pourcentage
    FROM
        source_dum
    GROUP BY
        centrerc,
        registrecommerce,
        annee,
        codegu;

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    J'ai l'impression que vous cherchez quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select deptno, job, Sal, RATIO_TO_REPORT(Sal) OVER () AS rr 
      From emp

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 454
    Par défaut
    Citation Envoyé par mnitu Voir le message
    J'ai l'impression que vous cherchez quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select deptno, job, Sal, RATIO_TO_REPORT(Sal) OVER () AS rr 
      From emp
    Faudrait que j'essaie de me souvenir de cette fonction, je n'y pense jamais :
    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
    select deptno, job, sum(sal) as sal_tot,
           round(100 * ratio_to_report(sum(sal)) over (partition by deptno), 2) as rr,
           round(sum(sal) * 100 / sum(sum(sal)) over (partition by deptno), 2) as ss  
      from scott.emp
    group by deptno, job
    order by 1 asc, 3 asc;
     
    DEPTNO	JOB		SAL_TOT	RR	SS
    10	CLERK		1300	14.86	14.86
    10	MANAGER		2450	28	28
    10	PRESIDENT	5000	57.14	57.14
    20	CLERK		1900	17.47	17.47
    20	MANAGER		2975	27.36	27.36
    20	ANALYST		6000	55.17	55.17
    30	CLERK		950	10.11	10.11
    30	MANAGER		2850	30.32	30.32
    30	SALESMAN	5600	59.57	59.57

  7. #7
    Membre averti
    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
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Comme ceci je pense, à tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT
        centrerc,
        registrecommerce,
        annee,
        codegu, 
        sum(valeurarticle) AS som_gu,
        sum(valeurarticle) * 100 / sum(sum(valeurarticle)) over(partition BY centrerc, registrecommerce, annee) AS pourcentage
    FROM
        source_dum
    GROUP BY
        centrerc,
        registrecommerce,
        annee,
        codegu;
    merci bq ça resout le probleme:

  8. #8
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Fais le en deux "couches" par exemple :
    d'abord tu sommes au premier niveau, puis tu calcules les pourcentages...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT centrerc, registrecommerce, annee, codegu, som_gu, 
    som_gu *100 / sum(som_gu) over(partition BY centrerc, registrecommerce, annee) AS pourcentage 
    FROM (
      SELECT centrerc, registrecommerce, annee, codegu,
             sum(valeurarticle) AS som_gu
      FROM source_dum
      GROUP BY centrerc, registrecommerce, annee, codegu
    );

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

Discussions similaires

  1. Probleme en jointure
    Par angelayoub dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/01/2006, 15h07
  2. [MySQL] probleme de jointure entre 2 tables
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 30/10/2005, 14h11
  3. Probleme de jointure externe ...
    Par amenis dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/09/2005, 09h59
  4. Probleme de Jointures imbriquées dans une requête
    Par Crevin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/04/2005, 11h05
  5. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11

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