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

Langage SQL Discussion :

[Oracle] rownum et group by


Sujet :

Langage SQL

  1. #1
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut [Oracle] rownum et group by
    Bonjour à tous !

    j'ai un petit soucis (en Oracle) : une requête que je n'arrive pas à programmer.


    Je sais sélectionner les n ième résultats d'une requête avec rownum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from mytable where rownum <5;
    Moi je voudrais, après un group by, récupérer les n ièmes éléments de chaque groupe, qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id, nom, type from mytable group by type,nom,id having rownum <5

    Mais évidement ça ne fonctionne pas


    Voila, merci si vous pouvez me mettre sur la piste !

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne suis pas sur d'avoir compris ce que tu veux, mais si le problème est d'obtenir le n premier enregistrements ce chaque groupe, tu peux t'inspirer de (lister les 5 premiers ID_Bidule pour chaque pays) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ID_Bidule, Pays
    FROM (SELECT ID_Bidule, Pays, 
                 rank() over(PARTITION BY Pays ORDER BY ID_Bidule) AS rang
          FROM laTable)
    WHERE rang < 6
    ORDER BY Pays, ID_Bidule
    Les fonctions analytiques ne sont disponibles qu'à partir de la version 9

  3. #3
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    merci ça fonctionne pile poil

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

Discussions similaires

  1. Réponses: 176
    Dernier message: 28/01/2011, 16h33
  2. Réponses: 93
    Dernier message: 27/11/2010, 18h46
  3. [mysql->oracle 9i] compatibilité "group by" ?
    Par cmoicmoi dans le forum Oracle
    Réponses: 2
    Dernier message: 27/10/2006, 19h58
  4. [Oracle] Requête avec GROUP BY
    Par bud_gw dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/07/2006, 11h26
  5. Rownum et Group By
    Par Adi81 dans le forum Oracle
    Réponses: 10
    Dernier message: 30/08/2005, 11h44

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