Поиск…


Вычисление медианы набора значений

Функция MEDIAN, поскольку Oracle 10g является простой в использовании функцией агрегации:

SELECT MEDIAN(SAL)
FROM EMP

Он возвращает медиану значений

Работает и с значениями DATETIME .

Результат MEDIAN вычисляется путем первого упорядочения строк. Используя N как количество строк в группе, Oracle вычисляет интересующий номер строки (RN) с помощью формулы RN = (1 + (0,5 * (N-1)). Окончательный результат агрегатной функции вычисляется линейным интерполяция между значениями из строк в номерах строк CRN = CEILING (RN) и FRN = FLOOR (RN).

Начиная с Oracle 9i вы можете использовать PERCENTILE_CONT, который работает так же, как и функция MEDIAN, при этом значение процентиля по умолчанию равно 0,5

SELECT PERCENTILE_CONT(.5) WITHIN GROUP(order by SAL) 
FROM EMP

VARIANCE

Отклонение измеряет, насколько далеко распределены множество чисел из его значения. С практической точки зрения это квадрат расстояния от его среднего (в центре) - чем больше число, тем дальше.

Следующий пример возвращает отклонение значений зарплаты

SELECT name, salary, VARIANCE(salary) "Variance"
FROM employees 

STDDEV

STDDEV возвращает стандартное стандартное отклонение выражения expr, набор чисел. Вы можете использовать его как совокупную, так и аналитическую функцию. Он отличается от STDDEV_SAMP тем, что STDDEV возвращает ноль, когда он имеет только одну строку входных данных, тогда как STDDEV_SAMP возвращает значение null.

Oracle Database вычисляет стандартное отклонение как квадратный корень из дисперсии, определенной для агрегатной функции VARIANCE.

Эта функция принимает в качестве аргумента любой числовой тип данных или какой-либо нечетный тип данных, который может быть неявно преобразован в числовой тип данных. Функция возвращает тот же тип данных, что и числовой тип данных аргумента.

Если вы укажете DISTINCT, вы можете указать только query_partition_clause аналитического_класса. Нельзя разрешить order_by_clause и windowing_clause.

В следующем примере возвращается стандартное отклонение заработной платы в таблице hr.employees :

Где hr - схема, а сотрудники - это имя таблицы.

SELECT STDDEV(salary) "Deviation"
FROM employees;

Deviation
----------
3909.36575

Запрос в следующем примере возвращает кумулятивное стандартное отклонение заработной платы в Департаменте 80 в таблице образцов hr.employees, упорядоченное по методу rent_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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow