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

Oracle Discussion :

compute sum et break on


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut compute sum et break on
    Bonjour,

    j'aimerais calculer le sous-total de la colonne cde à chaque break de la colonne four. Je fais également un break sur cde. J'aimerais que le sous-total donne la somme des valeurs affichées (uniquement les différentes valeurs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    break on  four skip 2 on cde
    compute sum of cde on four break
     
    select id, distinct four four,cde cde
    from cde;
    cela me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    id         four                cde
    ---        -------             -----
    1          entreprise1         100
    2                               50
    3                                
    sum**************             ------
                                     200
    et j'aimerai avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    id         four                cde
    ---        -------             -----
    1          entreprise1         100
    2                               50
    3                                
    sum**************             ------
                                     150
    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 138
    Par défaut
    Je ne sais pas pour les autres, mais je ne comprends que dalle de ce que vous voulez faire.

    De plus, cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    break on  four skip 2 on cde
    compute sum of cde on four break
    ne m'apparait pas être du sql, ni rien qui se rapporte à ORACLE.

    Veuillez expliquer plus clairement ce que vous désirez faire.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut
    il s'agit de commande sql+ intégré à Oracle

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 138
    Par défaut
    Alors j'aurais après quelquechose aujourd'hui.

    Par contre, je préfère faire mes sommations et aggrégations dans du sql plutot qu'avec des built-ins de SQL*Plus!

  5. #5
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Une solution partielle, en attendant mieux, affichant des 0 a la place des espaces attendus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            ID FOUR                               cdex
    ---------- ------------------------------ --------
             1 Enterprise                          100
             2                                      50
             3                                       0
             4                                       0
               ****************************** --------
               sum                                 150
    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
    BREAK ON four 
    COMPUTE SUM OF cdex ON four
     
    WITH x AS (SELECT rownum internal_id
                     ,id
                     ,four
                     ,cde
               FROM   cde    
               ORDER BY
                      1)
    SELECT x1.id
          ,x1.four
          ,DECODE(x1.cde,x2.cde,0,x1.cde) cdex
    FROM   x               x1
          ,x               x2
    WHERE  x1.internal_id  -1 = x2.internal_id (+)  
    ORDER BY
           1
          ,2  
    /

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    you can use rollup + analytics instead of sqlplus SUM+BRE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SQL> create table cde as select 1 id, 'entreprise1' four, 100 cde from dual union all select 2,'entreprise1',50 from dual union all select 3,'entreprise1',50 from dual union all select 4,'entreprise2',150 from dual;
     
    Table created.
     
    SQL> select decode(g,0,to_char(id,'FM999'),'sum') id, decode(g,0,decode(lag(four) over (order by four,id),four,null,four),'**********') four, decode(g,0, decode(lag(cde) over (order by four,id),cde, decode(lag(four) over (order by four,id),four,null,cde),cde),cde) cde from (select four,id, grouping(id) g,sum(distinct cde) cde from cde group by rollup(id),four) x order by x.four,x.id;
    ID   FOUR        CDE
    ---- ----------- ----------------------------------------
    1    entreprise1 100
    2                50
    3
    sum  **********  150
    4    entreprise2 150
    sum  **********  150

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    ou, en solution hybride

    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
     
    SQL> bre on four skip 2 on cde                                            
    SQL> comp sum of cde on four
    SQL> select id,four,decode(row_number() over (partition by four,cde order by id),1,cde) cde from cde order by id;
            ID FOUR               CDE
    ---------- ----------- ----------
             1 entreprise1        100
             2                     50
             3
               *********** ----------
               sum                150
     
     
             4 entreprise2        150
               *********** ----------
               sum                150

  8. #8
    Membre émérite Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Cool .

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut
    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2004, 10h50
  2. Fonction 'SUM'
    Par X-Deus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2003, 08h22
  3. [LG]Pause de programme ou Break time
    Par lvdnono dans le forum Langage
    Réponses: 11
    Dernier message: 17/05/2003, 17h23
  4. sum(XPATH) retourne NaN
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 19/03/2003, 13h48
  5. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18

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