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 :

Compteur sur un group by


Sujet :

Langage SQL

  1. #1
    Membre à l'essai Avatar de tagada37
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Compteur sur un group by
    bonjour, j'aimerai créer un compteur dans une requête, afin d'incrémenter une valeur en fonction du group by...
    avec un exemple ça sera plus simple...
    Soit ma table PAYS_VILLE. je voudrai avoir un compteur dont le pas s'incrémente à chaque occurrence de Pays-Ville.
    Pays
    Ville
    CP
    Compteur
    France Tours 37000 1
    France Tours 37500 1
    Espagne Barcelonne 10000 2
    Espagne Madrid 85000 3
    Italie Rome 12200 4
    Italie Rome 14200 4
    Italie Venise 56000 5

    la requête serait donc du genre :
    SELECT P.*, ...... as MonCompteur
    FROM PAYS_VILLE P ;

    j'ai bien essayé avec Row_Number() , mais j'ai pas trouvé comment faire sur deux colonnes. Mon SGBD est ORACLE 11G. merci,

  2. #2
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Bonjour,
    je ne sais pas si il y a plus simple, moi j'aurais codé comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      SELECT a.pays,
             a.ville,
             b.compteur,
             a.cp
        FROM pays_ville a
             JOIN
             (SELECT pays, ville, ROWNUM compteur
                FROM (  SELECT pays, ville
                          FROM pays_ville                     
                      GROUP BY pays, ville
                      ORDER BY pays, ville)) b
                ON b.pays = a.pays AND b.ville = a.ville   
    ORDER BY a.pays, a.ville
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

  3. #3
    Membre à l'essai Avatar de tagada37
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Septembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Effectivement ça marche. merci.

    Et en même temps, je viens de trouver la fonction DENSE_RANK() qui permet de créer un compteur en fonction d'un tri.

    voici la requête :
    select P.*, DENSE_RANK() OVER( ORDER BY PAYS, VILLE) as Compteur from PAYS_VILLE P ;

    ce qui donne le bon résultat :

    Pays Ville CP Compteur
    Espagne Barcelonne 10000 1
    Espagne Madrid 85000 2
    France Tours 37000 3
    France Tours 37500 3
    Italie Rome 12200 4
    Italie Rome 14200 4
    Italie Venise 56000 5


    voilà, génial, je vais pouvoir créer une nouvelle table basé sur mon group by avec un ID UNIQUE.

  4. #4
    Membre confirmé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 396
    Points : 641
    Points
    641
    Par défaut
    Je venais de trouver aussi avec Dense_rank, vachement puissantes ces fonctions analytiques
    La faiblesse humaine est d'avoir des curiosités d'apprendre ce qu'on ne voudrait pas savoir

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

Discussions similaires

  1. Compteur sur site
    Par Kerod dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 13/07/2006, 09h15
  2. Réponses: 2
    Dernier message: 11/04/2006, 16h09
  3. Théorie sur les groupes et les ensembles
    Par grav dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/02/2005, 18h24
  4. Compteur sur l'utilisation des index
    Par hkhan dans le forum Administration
    Réponses: 11
    Dernier message: 14/10/2004, 17h57
  5. Aide sur les groupes (ADO)
    Par portu dans le forum QuickReport
    Réponses: 3
    Dernier message: 18/08/2004, 16h13

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