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 :

Sum dans requête


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut Sum dans requête
    Bonjour à tous

    J'ai une requete de ce genre :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    select TO_CHAR(count(case When f.analysis_type in  ('BI','SNES','BULL_TR') Then c.name End)) AS NbDemande,
      f.analysis_type as Bulletin,
      DECODE(c.x_l_type_client,'C','PRIVE','S','SOC','Q','SEV-MAGNERAUD','G','GEVES') as Client
        from (select sum(d.X_N_DUREE) as duree,a.name as project
              from project a,DEM05_PRESTATIONS b,DEM01_DETAIL_PREST c,TEST_LIST d
              where a.name = b.Project
              AND a.name = c.Project
              AND b.D05_A_VRCI_NO = c.D01_A_VRCI_NO
              AND c.D01_A_VRLISTPLAN_ANA = d.name
              GROUP BY a.name) a
              ,
            (select max(b.D05_D_RENDU_SNES) as dateSNES,a.name as project
              from project a,DEM05_PRESTATIONS b,DEM01_DETAIL_PREST c
              where a.name = b.Project
              AND a.name = c.Project
              AND b.D05_A_VRCI_NO = c.D01_A_VRCI_NO
              GROUP BY b.D05_D_RENDU_SNES,a.name) b,
              project c,
              DEM01_DETAIL_PREST d,
              TEST_LIST_ENTRY e,
              ANALYSIS f
        where a.project = b.project
        AND a.project = c.name
        AND b.project = c.name
        AND c.date_created <= b.dateSNES-a.duree-7
        AND c.name = d.project
        AND d.D01_A_VRLISTPLAN_ANA = e.name
        AND e.analysis = f.name
        AND f.analysis_type in ('BI','SNES','BULL_TR')
        AND (c.x_l_type_client is not null AND c.x_l_type_client != 'T')
        group by f.analysis_type,c.x_l_type_client
        order by f.analysis_type

    Le résultat est le suivant :
    358------BI--------PRIVE
    4206-----BI--------SOC
    4--------BULL_TR--SEV-MAGNERAUD
    178------BULL_TR--PRIVE
    1101-----BULL_TR--GEVES
    4068-----SNES-----SEV-MAGNERAUD
    4550-----SNES-----PRIVE
    57939----SNES-----SOC

    J'aimerai obtenir un résultat comme suis :
    Nb------Bulletin------Client---------------somme/Bulletin
    358-----BI-----------PRIVE---------------4564
    4206----BI-----------SOC----------------4564
    4------ BULL_TR-----SEV-MAGNERAUD----1283
    178-----BULL_TR-----PRIVE---------------1283
    1101----BULL_TR-----GEVES--------------1283
    4068----SNES--------SEV-MAGNERAUD----66557
    4550----SNES--------PRIVE---------------66557
    57939---SNES--------SOC----------------66557

    En gros, j'aimerai obtenir une somme pour chaque type de bulletin.
    Est ce possible, si oui comment?

    Merci d'avance

    ps : je sais je sais, le tuning de ma requete est à revoir...

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    C'est une somme analytique qu'il vous faut, dans ce genre :

    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
    SCOTT@DEMO>select ename, deptno, sal, sum(sal) over (partition by deptno) somme_dept 
    from emp;
     
    ENAME          DEPTNO        SAL SOMME_DEPT
    ---------- ---------- ---------- ----------
    KING               10       5000       8750
    CLARK              10       2450       8750
    MILLER             10       1300       8750
    FORD               20       3000       6775
    SMITH              20        800       6775
    JONES              20       2975       6775
    JAMES              30        950       9400
    TURNER             30       1500       9400
    MARTIN             30       1250       9400
    WARD               30       1250       9400
    ALLEN              30       1600       9400
    BLAKE              30       2850       9400

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    mais la mon "sal" c'est mon count, tu penses que ca peut marcher aussi?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    au temps pour moi, oui ca marche bien!
    super merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    sans vouloi abuser : comment faire maintenant pour avoir la somme totale?
    La meme somme sera donc répétée partout...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Par défaut
    c'est bon j'ai trouvé : ne rien mettre dans le () du over.

    Merci encore à vous

    superbe article la dessus à ce propos :
    http://www.orafaq.com/node/55

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

Discussions similaires

  1. probleme SUM et MAX dans requête imbriquée
    Par amednagh dans le forum Développement
    Réponses: 1
    Dernier message: 17/10/2011, 14h17
  2. Plusieurs SUM dans une requête
    Par pj69100 dans le forum Requêtes
    Réponses: 6
    Dernier message: 02/01/2007, 10h34
  3. Pb sur SUM dans requête SQL exécutée sous VB
    Par MAKSIM dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/11/2006, 17h07
  4. Réutiliser le résultat d'un SUM dans la requête
    Par Bobtop dans le forum Requêtes
    Réponses: 4
    Dernier message: 03/07/2006, 11h12
  5. [ACCESS2002][fonction sum dans une requête]
    Par louroulou dans le forum Access
    Réponses: 1
    Dernier message: 14/06/2006, 09h26

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