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 :

GROUP_ID dans requete GROUP BY


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut GROUP_ID dans requete GROUP BY
    Quelqu'un a-t-il utilise l'ordre sql
    dans une requete GROUP BY.

    L'exemple que j'ai trouve sur le net ne marche pas:

    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
     
    CREATE TABLE grp_rep (
    person_id   NUMBER(3),
    division    VARCHAR2(3),
    commission  NUMBER(5));
     
    INSERT INTO grp_rep VALUES (1,'SAM',1000);
    INSERT INTO grp_rep VALUES (2,'EUR',1200);
    INSERT INTO grp_rep VALUES (1,'EUR',1450);
    INSERT INTO grp_rep VALUES (1,'EUR',700);
    INSERT INTO grp_rep VALUES (2,'SEA',1000);
    INSERT INTO grp_rep VALUES (2,'SEA',2000);
    INSERT INTO grp_rep VALUES (1,'EUR',800);
    COMMIT;
     
    SELECT person_id, division, SUM(commission)
    FROM grp_rep
    GROUP BY person_id, division;
     
    SELECT person_id, division, SUM(commission)
    FROM grp_rep
    GROUP BY person_id, ROLLUP (person_id, division);
     
    SELECT person_id, division, SUM(commission), GROUP_ID() g
    FROM grp_rep
    GROUP BY person_id, ROLLUP (person_id, division);

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    ROLLUP n'est disponible que depuis Oracle 9i je crois.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    je suis sous Oracle 9i

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ok, alors peut-on avoir un énoncé du problème plus précis que "ça ne marche pas" ?

  5. #5
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    je sais pas ce que tu veux faire mais si c'est pour savoir si c'est aggrégé sur une colonne il faut faire grouping(maColonne).


    Laly.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    l'erreur oracle sur l'ordre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT person_id, division, SUM(commission)
    FROM grp_rep
    GROUP BY person_id, ROLLUP (person_id, division);
    est
    ORA-30490 Ambiguous expression in GROUP BY ROLLUP or CUBE list
    et pour l'ordre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT person_id, division, SUM(commission), GROUP_ID() g
    FROM grp_rep
    GROUP BY person_id, ROLLUP (person_id, division);
    l'erreur sur GROUP_BY est
    ORA-00904 Invalid column name

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    et pour l'ordre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT person_id, division, SUM(commission), GROUP_ID() g
    FROM grp_rep
    GROUP BY person_id, ROLLUP (person_id, division);
    l'erreur sur GROUP_BY est
    ORA-00904 Invalid column name
    [/quote]

    chez moi ta requete fonctionne avec oracle 9i.


    je comprend pas pourquoi tu fais à la fois un group by et un group by rollup sur person_id ???? peux tu définir par écrit le type de tableaux ( avec sous totaux ) que tu veux obtenir.

    exemples :

    SELECT
    DECODE (GROUPING(person_id),1,'all person_id',person_id) AS PERSON_ID,
    DECODE (GROUPING(division),1,'all division',division) AS DIVISION,
    SUM(commission) AS COMMISSION
    FROM grp_rep
    GROUP BY ROLLUP (person_id, division);


    SELECT
    DECODE (GROUPING(person_id),1,'all person_id',person_id) AS PERSON_ID,
    DECODE (GROUPING(division),1,'all division',division) AS DIVISION,
    SUM(commission) AS COMMISSION
    FROM grp_rep
    GROUP BY person_id, ROLLUP (person_id, division);

    SELECT
    DECODE (GROUPING(person_id),1,'all person_id',person_id) AS PERSON_ID,
    DECODE (GROUPING(division),1,'all division',division) AS DIVISION,
    SUM(commission) AS COMMISSION
    FROM grp_rep
    GROUP BY person_id, ROLLUP ( division);

    a priori les requetes suivantes fonctionnent aussi sur oracle 8 car je n'ai pas utiliser le group_id 2 et 3

    a confirmer .

    a+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    merci lolo pour tes exemples ca va m'aidre a comprendre le ' group by rollup'

    en fait le 1er et le 3eme exemples passent bien mais le 2eme exemple me donne toujours l'erreur:
    ORA-30490 Ambiguous expression in GROUP BY ROLLUP or CUBE list
    si j'ai mis l'ordre GROUP BY ROLLUP c'est un peu 'betement' en recopiant l'exemple. Je voulais surtout utiliser le fameux group_id() qui permet de savoir combien de lignes sont concernees par le group by
    et ca impossible de le faire marche avec ou sans 'rollup'

    mystere!

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par quemener
    merci lolo pour tes exemples ca va m'aidre a comprendre le ' group by rollup'

    en fait le 1er et le 3eme exemples passent bien mais le 2eme exemple me donne toujours l'erreur:
    ORA-30490 Ambiguous expression in GROUP BY ROLLUP or CUBE list
    si j'ai mis l'ordre GROUP BY ROLLUP c'est un peu 'betement' en recopiant l'exemple. Je voulais surtout utiliser le fameux group_id() qui permet de savoir combien de lignes sont concernees par le group by
    et ca impossible de le faire marche avec ou sans 'rollup'

    mystere!

    moi je suis sous oracle 9ir2 et tes exemples fonctionnent.

    tu es sur quelle version d'oracle ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    ConnectÚ Ó :
    Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut


    je viens de me rendre compte que je n'etais pas sur la bonne BD: j'etais sur
    la meme base version Oracle 8.1.7.4 .. sur la 9i tout marche bien

    Desolee pour cette inattention!!!!!

    je clos la fiche et merci pour les exemples que je vais etudier a tete reposee!

  12. #12
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Cela mériterait une bonne fessée !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/09/2011, 16h08
  2. Problème group by dans requete union
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 07/01/2008, 16h49
  3. Réponses: 3
    Dernier message: 15/07/2005, 17h58
  4. [TRANSACTION] Erreur dans requete
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/05/2005, 17h38
  5. erreur syntaxe dans requete
    Par dom - ien moutiers dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/04/2004, 11h54

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