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 :

Comparaison de ligne avec un pourcentage


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Comparaison de ligne avec un pourcentage
    Je souhaite sélectionner les noms où le numéro est le plus significatif avec un écart de plus de 20% par rapport aux autres numéros
    exemple :
    nom1 - 610
    nom1 - 610
    nom1 - 600

    nom2 - 610
    nom2 - 600

    nom3 - 610
    nom3 - 605
    nom3 - 600

    nom4 - 610
    nom4 - 610
    nom4 - 610
    nom4 - 605
    nom4 - 605
    nom4 - 600
    nom4 - 600

    Résultat : nom1 -610
    Je ne prends pas nom2 puisque 50% sur 610 et 600. Je ne prends pas nom3 puisque 33% sur 610, 605 et 600. Je ne prends pas nom4 puisque moins de 20% d'écart sur.

    Je ne vois pas du tout comment faire !

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Je ne comprends absolument rien à votre besoin.

    Comment trouvez vous 50% d'écart entre 600 et 610 (pour nom2) ???

    Pouvez vous détailler un peu les calculs ?

  3. #3
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    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
    27
    with data as (select 'nom1' sel ,  610 val from dual union all
                  select 'nom1' sel ,  610 val from dual union all
                  select 'nom1' sel ,  600 val from dual union all
                  select 'nom2' sel ,  610 val from dual union all
                  select 'nom2' sel ,  600 val from dual union all
                  select 'nom3' sel ,  610 val from dual union all
                  select 'nom3' sel ,  605 val from dual union all
                  select 'nom3' sel ,  600 val from dual union all
                  select 'nom4' sel ,  610 val from dual union all
                  select 'nom4' sel ,  610 val from dual union all
                  select 'nom4' sel ,  610 val from dual union all
                  select 'nom4' sel ,  605 val from dual union all
                  select 'nom4' sel ,  605 val from dual union all
                  select 'nom4' sel ,  600 val from dual union all
                  select 'nom4' sel ,  600 val from dual ),
        stats as (select distinct
                         sel
                       , val
                       , count(val) over (partition by sel, val) / count(sel) over (partition by sel ) prop
                       , max(val) over (partition by sel) m_val
                  from data ),
        pre_c as (select sel, val, stddev(prop) over (partition by sel) eqt , m_val, max(prop) over (partition by sel) m_prop, prop
                  from stats )
    select sel, val 
    from pre_c 
    where val=m_val
      and eqt > 0.2
    ou

    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
    27
    with data as (select 'nom1' sel ,  610 val from dual union all
                  select 'nom1' sel ,  610 val from dual union all
                  select 'nom1' sel ,  600 val from dual union all
                  select 'nom2' sel ,  610 val from dual union all
                  select 'nom2' sel ,  600 val from dual union all
                  select 'nom3' sel ,  610 val from dual union all
                  select 'nom3' sel ,  605 val from dual union all
                  select 'nom3' sel ,  600 val from dual union all
                  select 'nom4' sel ,  610 val from dual union all
                  select 'nom4' sel ,  610 val from dual union all
                  select 'nom4' sel ,  610 val from dual union all
                  select 'nom4' sel ,  605 val from dual union all
                  select 'nom4' sel ,  605 val from dual union all
                  select 'nom4' sel ,  600 val from dual union all
                  select 'nom4' sel ,  600 val from dual ),
        stats as (select distinct
                         sel
                       , val
                       , count(val) over (partition by sel, val) / count(sel) over (partition by sel ) prop
                       , max(val) over (partition by sel) m_val
                  from data ),
        pre_c as (select sel, val, stddev(prop) over (partition by sel) eqt , m_val, max(prop) over (partition by sel) m_prop, prop
                  from stats )
    select sel, val 
    from pre_c 
    where prop=m_prop
      and eqt > 0.2
    selon ce que vous entendez par "le plus significatif"
    d'autres options sont possibles en analysant la proportion en tant que telle

    dans les deux cas le résultat est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SEL         VAL
    ---- ----------
    nom1        610

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

Discussions similaires

  1. [XL-2003] VBA comparaison de lignes avec plusieurs critères
    Par klissou69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/07/2013, 10h49
  2. [V6] [BO 6.5] Comparaison de lignes avec BO
    Par veroa dans le forum Deski
    Réponses: 2
    Dernier message: 22/01/2009, 14h50
  3. Comparaison de valeur de ligne avec deux feuilles différentes
    Par charlix dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2008, 15h54
  4. Comparaison de chaîne (avec pourcentage ou...)
    Par yves232 dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2006, 17h23
  5. [DEBUTANT]comparaison une ligne avec un STRing
    Par Battosaiii dans le forum Langage
    Réponses: 2
    Dernier message: 05/05/2005, 20h15

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