1 pièce(s) jointe(s)
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:
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:
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.