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 :

ORACLE Rank et count


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut ORACLE Rank et count
    Bonjour,
    J'ai le problème suivant : voici un exemple de table:

    ID, CLE1,CLE2,CLE3

    Dans cette table, nous pouvons trouver plusieurs fois les même ID,CLE1,CLE2,CLE3.

    Il s'agit de compter par ID et par CLE1+CLE2+CLE3 (le rupture doit se faire sur la concaténation de ces champs) et de ne retenir que les plus grandes sommes (d'où le comptage à faire) et dont Rank <2, en incluant les doublons.

    Je pense qu'il faut utiliser un count(), un order by et un rank() mais pour la syntaxe exacte ???

    Merci de votre aide et bon week-end.

    Voici un exemple :

    Exemple de table

    ID CLE1 CLE2 CLE3
    A UN UN UN
    A UN UN UN
    B UN UN DEUX
    B UN UN TROIS
    C DEUX DEUX UN
    C DEUX DEUX UN
    C DEUX TROIS UN
    D UN DEUX UN
    D UN DEUX UN
    D UN DEUX UN
    E UN UN UN
    E UN UN UN

    Résultat du count()

    A UN-UN-UN 2
    B UN-UN-DEUX 1
    B UN-UN-TROIS 1
    C DEUX-DEUX-UN 2
    C DEUX-TROIS-UN 1
    D UN-DEUX-UN 3
    E UN-UN-UN 2

    Ce que je souhaite

    D UN-DEUX-UN 3
    A UN-UN-UN 2
    C DEUX-DEUX-UN 2
    E UN-UN-UN 2

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut COUNT peut suffire
    Pourquoi ne pas se contenter de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ID, CLE1||CLE2||CLE3 "COMBINAISON", COUNT(1)
    FROM TABLE
    GROUP BY ID, CLE1||CLE2||CLE3 
    ORDER BY 3 DESC;
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  3. #3
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Et pourquoi faire une concaténation ?

    Source d'erreur ex
    CLE1= 'UN*',CLE2='UN'
    est différent de
    CLE1= 'UN',CLE2='*UN'
    mais pas la concaténation
    CLE1+CLE2='UN*UN'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT ID, CLE1,CLE2,CLE3, COUNT(*)
    FROM TABLE
    GROUP BY ID, CLE1,CLE2,CLE3 
    HAVING COUNT(*)>2
    ORDER BY 3 DESC;
    NB : Comment ca, bon week end ?
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Le gars a posté le 2 juin !
    C'est pour ça qu'il partait en week-end, mais surtout j'espère que depuis il a trouvé sa réponse...
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

Discussions similaires

  1. [FAQ] Emuler la fonction RANK() d'Oracle.
    Par djeen dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/11/2007, 16h42
  2. Réponses: 8
    Dernier message: 17/05/2006, 14h32
  3. [Oracle] select count(..) et Oracle 10G
    Par onclebob dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/09/2005, 15h04
  4. [Oracle 8i - SQL] Rownum et Rank Over
    Par Ajrarn dans le forum Oracle
    Réponses: 6
    Dernier message: 10/03/2005, 15h20
  5. [Oracle 8i] ne garder que certains enregistrements (COUNT ?)
    Par delphim dans le forum Langage SQL
    Réponses: 13
    Dernier message: 23/02/2005, 14h30

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