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 :

Médiane avec un order by sous SQL


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Par défaut Médiane avec un order by sous SQL
    Bonjour,

    j'aimerais pouvoir faire la médiane d'une variable et la somme de cette même variable en fonction des modalités d'une autre variable.
    Pour mieux comprendre, j'ai fait un jeu de test, dont voici les valeurs dans un fichier Excel :

    Imaginons que cette table se nomme : table_finale

    Pour faire la médiane, je me suis rendu compte que sous SQL, ce n'était pas forcément facile.
    Pour info, lisez ici : http://sqlpro.developpez.com/optimis...dianeEnSQL.pdf

    Bref, en faisant le code suivant, je peux faire la médiane GLOBALE de ma série de données :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    proc sql;
    create table temp_mediane as
     select *
     from table_finale
     UNION ALL
     select *
     from table_finale
     ;
     QUIT;
     
     
    proc sql;
    create table mediane as 
    select AVG(DISTINCT tps_recp) AS MEDIANE
    FROM (SELECT tps_recp
          FROM (select *
                from temp_mediane) STT
          WHERE ( SELECT COUNT(*)
                  FROM (select *
                        from table_finale)
                        ) <=
                ( SELECT COUNT(*)
                  FROM  (select *
                         from temp_mediane) SOU
                  WHERE SOU.tps_recep <= STT.tps_recep)
                  AND
                  ( SELECT COUNT(*)
                    FROM (select *
                          from table_finale)
                          ) <=
                  ( SELECT COUNT(*)
                    FROM  (select *
                           from temp_mediane) SUR
                    WHERE SUR.tps_recep >= STT.tps_recep)
                    )    
    ;
    QUIT;
    A savoir que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (select *
              from table_finale)
    n'est pas là pour vous embêter, c'est parce que dans mon cas précis, je filtre la table sur une autre condition ( que je n'ai pas évoqué par facilité).

    Bref, en faisant ceci, j'obtiens bien dans ma table de sortie (mediane) une seule ligne avec 1 variable => la médiane globale de la série de données.

    Maintenant, j'aimerais pouvoir faire la médiane ET la somme de cette variable par les modalités (mois) de la variable mois.

    Quelqu'un saurait-il comment faire ?

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Avec quel SGBD ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Par défaut
    Oracle

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Mais sous Oracle vous avez une fonction qui fait ceci, n'est-ce pas suffisant ?

    http://docs.oracle.com/cd/B19306_01/...nctions086.htm

Discussions similaires

  1. GROUP BY et ORDER BY sous SQL 3.23
    Par imagonem dans le forum MySQL
    Réponses: 13
    Dernier message: 03/03/2010, 20h47
  2. Réponses: 3
    Dernier message: 23/09/2009, 10h45
  3. J’ai un souci avec les valeurs null sous sql server.
    Par zoltix dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/06/2006, 10h27
  4. Pbs avec plans de maintenance sous l'agent SQL
    Par sheira dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/09/2005, 06h16
  5. Pb avec DROP COLUMN sous SQL Server 2000
    Par debailleul dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/03/2004, 14h38

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