Oracle Database
Fonctions statistiques
Recherche…
Calcul de la médiane d'un ensemble de valeurs
La fonction MEDIAN depuis Oracle 10g est une fonction d'agrégation facile à utiliser:
SELECT MEDIAN(SAL)
FROM EMP
Il retourne la médiane des valeurs
Fonctionne également sur les valeurs DATETIME
.
Le résultat de MEDIAN est calculé en classant d'abord les lignes. En utilisant N comme nombre de lignes dans le groupe, Oracle calcule le numéro de ligne (RN) concerné avec la formule RN = (1 + (0.5 * (N-1)). Le résultat final de la fonction d'agrégation est calculé par linéaire interpolation entre les valeurs des lignes aux numéros de ligne CRN = CEILING (RN) et FRN = FLOOR (RN).
Depuis Oracle 9i, vous pouvez utiliser PERCENTILE_CONT, qui fonctionne de la même manière que la fonction MEDIAN avec une valeur par défaut de 0,5
SELECT PERCENTILE_CONT(.5) WITHIN GROUP(order by SAL)
FROM EMP
VARIANCE
La variance mesure à quel point un nombre donné est étalé de sa moyenne. Du point de vue pratique, c'est la distance au carré de sa moyenne (centre) - plus le nombre est grand, plus le point est éloigné.
L'exemple suivant renverrait la variance des valeurs de salaire
SELECT name, salary, VARIANCE(salary) "Variance"
FROM employees
STDDEV
STDDEV renvoie l'écart type d'échantillon de expr, un ensemble de nombres. Vous pouvez l'utiliser comme fonction agrégée et analytique. Il diffère de STDDEV_SAMP dans le sens où STDDEV renvoie zéro lorsqu'il ne possède qu'une ligne de données en entrée, alors que STDDEV_SAMP renvoie null.
Oracle Database calcule l'écart type en tant que racine carrée de la variance définie pour la fonction d'agrégation VARIANCE.
Cette fonction prend comme argument tout type de données numérique ou tout type de données non numérique pouvant être implicitement converti en un type de données numérique. La fonction renvoie le même type de données que le type de données numérique de l'argument.
Si vous spécifiez DISTINCT, vous ne pouvez spécifier que la requête_partition_clause du paramètre analytic_clause. Les commandes order_by_clause et windowing_clause ne sont pas autorisées.
L'exemple suivant renvoie l'écart type des salaires dans la table exemple hr.employees :
Où h est Schéma et employés est un nom de table.
SELECT STDDEV(salary) "Deviation"
FROM employees;
Deviation
----------
3909.36575
La requête dans l'exemple suivant renvoie l'écart-type cumulé des salaires dans le service 80 dans l'exemple de table hr.employees, ordonné par hire_date:
SELECT last_name, salary,
STDDEV(salary) OVER (ORDER BY hire_date) "StdDev"
FROM employees
WHERE department_id = 30;
LAST_NAME SALARY StdDev
------------------------- ---------- ----------
Raphaely 11000 0
Khoo 3100 5586.14357
Tobias 2800 4650.0896