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 :

Rownum et Group By


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Rownum et Group By
    Oracle 10g, windows 2000.

    Bonjour tout le monde,

    je souhaite réaliser une requête qui me sorte les N premières lignes pour chaque valeur d'un Group By.
    J'ai une colonne segmentation sur laquelle doit s'appliquer le Group By, une colonne de Date qui va trier le Group By.

    J'ai essayé de voir les fonctions analytiques mais sans succès.

    Auriez vous une idée ? Ai je été assez clair ?

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    essaye avec les UNION si tu sais toutes les valeurs potentielles de SEGMENTATION.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM MATABLE WHERE SEGMENTATION='VALEUR 1' AND ROWNUM<3 ORDER BY MADATE
    UNION
    SELECT * FROM MATABLE WHERE SEGMENTATION='VALEUR 2' AND ROWNUM<3 ORDER BY MADATE
    UNION
    SELECT * FROM MATABLE WHERE SEGMENTATION='VALEUR 3' AND ROWNUM<3 ORDER BY MADATE

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Oui c'est ce que j'aurais fait mais les valeurs de segmentations sont variables et donc il y a de possible changement chaques mois.

    Sinon pour info, il me semble avoir vu que le rownum se place en dehors de la requête qui fait le tri pour qu'il soit effectif sur les lignes triées

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Oui, j'ai rajouté le tri après sans faire gaffe lol

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Je vais peut être opter pour ta solution en SQL Dynamique si y a pas mieux

  6. #6
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ben si tu peux, le SQL dynamique c'est le mieux oui.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    J'ai peur de ne pas avoir tout compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from (select  .... from tatable  group by segmentation order by date ) where rownum < 4

  8. #8
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Non, il veut les 4 (genre) premières lignes de CHAQUE groupement.
    Et pas les 4 premières lignes, tout groupements confondus.

  9. #9
    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
    Un truc dans ce goût...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * 
    FROM ( 
    SELECT m.*, 
    row_number() over(PARTITION BY deptno ORDER BY deptno) rn 
    FROM EMP m 
    ) 
    WHERE rn <= 3

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Cool c'est exactement ça !!

    Merci beaucoup.

  11. #11
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ah ouaih quand même !!

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

Discussions similaires

  1. rownum dans un group by
    Par mikees dans le forum Oracle
    Réponses: 3
    Dernier message: 14/01/2009, 09h55
  2. [Oracle] rownum et group by
    Par Mathusalem dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2006, 14h00
  3. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21
  4. gestion des groupes
    Par muaddib dans le forum QuickReport
    Réponses: 3
    Dernier message: 31/12/2002, 11h01

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