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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow