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 :

Calculer la valeur modale !?!


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 41
    Points
    41
    Par défaut Calculer la valeur modale !?!
    Hello tous,

    J'ai 3 moyennes à faire : la classique, la médiane et la modale (valeur la plus observée)

    -la classique : easy
    -la médiane : easy aussi avec une fonction analytique (voir en bas)
    - mais alors la modale ... !??
    je galère !
    c'est quoi le plus simple ?
    vu que c'est pour un datawarehouse, le faire avec une fonction analytique à la volée (comme la médiane) serait le mieux !

    ma table de test :

    CREATE TABLE zTestMoyenne
    (
    GRP VARCHAR2(4 BYTE),
    VAL NUMBER(2)
    )

    jeu d'essai :
    A 1
    A 2
    B 3
    C 4
    D 3
    D 5
    D 5
    D 6

    solution pour la médiane :

    select
    GRP,
    percentile_cont(0.5) within group (order by VAl) mediane
    from
    zTestMoyenne
    group by
    GRP

    D'avance merci !
    +

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut

    Pour le jeu d'essai, le plus simple est de donner un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WITH zTestMoyenne
     AS (SELECT ... UNION ALL...)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    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
    WITH zTestMoyenne AS (SELECT 'A' grp, 1 val FROM DUAL 
    UNION ALL SELECT 'A' grp, 2 val FROM DUAL 
    UNION ALL SELECT 'B' grp, 3 val FROM DUAL 
    UNION ALL SELECT 'C' grp, 4 val FROM DUAL 
    UNION ALL SELECT 'D' grp, 3 val FROM DUAL 
    UNION ALL SELECT 'D' grp, 5 val FROM DUAL 
    UNION ALL SELECT 'D' grp, 5 val FROM DUAL 
    UNION ALL SELECT 'D' grp, 6 val FROM DUAL
    UNION ALL SELECT 'D' grp, 6 val FROM DUAL
    UNION ALL SELECT 'D' grp, 6 val FROM DUAL
     )
    SELECT grp, ROUND(AVG(val),2) AS moyenne, percentile_cont(0.5) WITHIN GROUP (ORDER BY val) mediane,
    	MAX(modale)
    FROM (
    	SELECT grp, val, 
    		first_value(val) OVER (PARTITION BY grp ORDER BY nbval DESC) AS modale
    	FROM (
    		SELECT GRP, val, 
    			COUNT(*) OVER (PARTITION BY grp, val) AS nbval
    		FROM zTestMoyenne
    		)
    	)
    GROUP BY GRP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    GRP	MOYENNE	MEDIANE	MAX(MODALE)
    A	1,5	1	1
    B	3	3	3
    C	4	4	4
    D	5,17	5	6
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    Merci McM
    Je regarde si mon requêteur (bien connu, c'est en 2 mots, ça commence par un B et fini par un S ;-) sait faire ça à la volée sur mon modèle DWH en constellation (pas gagné). si c'est pas le cas faudra faire ça à l'alim (un ETL aussi bien connu) ...
    +

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    c'est pas STATS_MODE que tu cherches?

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    n'est-il aussi pas plus simple d'utiliser median pour avoir la mediane?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  grp,   avg(val), 
      median(val),  stats_mode(val) 
    FROM t
    group by grp;
    Edit: STATS_MODE ne supporte pas de clause analytique..

  7. #7
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    C'est du quoi Stats_mode ? 10g ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Jeff.p18 Voir le message
    -la médiane : easy aussi avec une fonction analytique (voir en bas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    percentile_cont(0.5) within group (order by VAl)
    Si tu me permets ce commentaire, PERCENTILE_CONT n'est pas une fonction analytique dans ton exemple. C'est une fonction d'aggrégation (d'où le GROUP BY).

    Une fonction analytique utilise une clause analytique OVER().

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT grp, val ,
      PERCENTILE_CONT(0.5) WITHIN GROUP (order by VAL) 
      over (partition by grp)
    FROM t

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par McM Voir le message
    C'est du quoi Stats_mode ? 10g ?
    oui, en tout cas en 10.1 ça marche, en 9.2 je ne pense pas

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Points : 41
    Points
    41
    Par défaut
    halluciant Stats_mode !!!
    vive la 10g
    Oracle ça devient vraiment un SGBDR de fainéants ^^
    merci @ tous
    +

  11. #11
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    En 9.2 ça marche pas. Ni stats_mode, ni median
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Calcul de valeurs propres
    Par Andrey dans le forum Pascal
    Réponses: 6
    Dernier message: 11/02/2007, 23h20
  2. calcul de valeurs présentes dans une liste de résultat
    Par Makaveli33 dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2006, 19h03
  3. Problème champs calculés et valeur null
    Par markintell dans le forum Access
    Réponses: 18
    Dernier message: 10/01/2006, 18h14
  4. Réponses: 6
    Dernier message: 22/11/2005, 17h08
  5. [Debutant]calcul de valeurs propres, givens-householder
    Par malbarre dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 18/08/2005, 16h40

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