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 :

GROUP BY avec DISTINCT [11gR2]


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    OCTAL - ORACLE
    Inscrit en
    Février 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : OCTAL - ORACLE
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2008
    Messages : 25
    Points : 24
    Points
    24
    Par défaut GROUP BY avec DISTINCT
    Bonjour,

    J'ai cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select spof_grof_numero, SPOF_PHOF_NUMERO_PHASE, sum(SPOF_QTE_BONNE)
    from    suivi_phase_of
    group by spof_grof_numero, SPOF_PHOF_NUMERO_PHASE
    ci-dessous le résultat de ma requête.

    Nom : table.png
Affichages : 394
Taille : 8,2 Ko

    Mais mon objectif est d'avoir que les lignes dont la quantité est différente. si deux lignes ou plus ont la même quantité j'affiche la ligne de derniere spof_phof_numero.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    le G15-02407 sera affiché que 2 fois
    G15-02407 | 901 | 3240
    G15-02407 | 911 | 270
    Merci pour votre aide.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    refais un select group by sur le résultat de ton select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT spof_grof_numero, MAX(SPOF_PHOF_NUMERO_PHASE), qte
    FROM (SELECT spof_grof_numero, SPOF_PHOF_NUMERO_PHASE, SUM(SPOF_QTE_BONNE) qte
          FROM    suivi_phase_of
          GROUP BY spof_grof_numero, SPOF_PHOF_NUMERO_PHASE)
    GROUP BY spof_grof_numero, qte
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il manque un petit bout :
    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
    with cte_res (spof_grof_numero, spof_phof_numero_phase, qte) as
    (
    select 'G15-02409', 901, 1020 from dual union all
    select 'G15-02408', 901,  372 from dual union all
    select 'G15-02407', 901, 3240 from dual union all
    select 'G15-02407', 906,  270 from dual union all
    select 'G15-02407', 911,  270 from dual
    )
      ,  cte_int (spof_grof_numero, spof_phof_numero_phase, qte, nb_grof) as 
    (
      select spof_grof_numero
           , max(spof_phof_numero_phase)
           , qte
           , count(*) over(partition by spof_grof_numero) as nb_grof
        from cte_res
    group by spof_grof_numero, qte
    )
      select spof_grof_numero, spof_phof_numero_phase, qte
        from cte_int
       where nb_grof > 1
    order by spof_grof_numero, spof_phof_numero_phase;
     
    SPOF_GROF_NUMERO SPOF_PHOF_NUMERO_PHASE        QTE
    ---------------- ---------------------- ----------
    G15-02407                           901       3240 
    G15-02407                           911        270

  4. #4
    Membre à l'essai
    Homme Profil pro
    OCTAL - ORACLE
    Inscrit en
    Février 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : OCTAL - ORACLE
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2008
    Messages : 25
    Points : 24
    Points
    24
    Par défaut Résolu
    Merci MCM et WALDAR, ça marche

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

Discussions similaires

  1. Requête avec des groupes de conditions distincts
    Par abdelhamidem dans le forum SQL
    Réponses: 2
    Dernier message: 08/03/2011, 18h00
  2. doublons avec distinct
    Par deubal dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/11/2005, 17h07
  3. probleme avec distinct
    Par firejocker dans le forum Langage SQL
    Réponses: 17
    Dernier message: 14/11/2005, 18h27
  4. Problème requête avec group by et distinct
    Par tomca dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2005, 16h10
  5. tri obligatoire avec DISTINCT?
    Par Marseillais9 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 31/07/2003, 17h50

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