Oracle Database
Статистические функции
Поиск…
Вычисление медианы набора значений
Функция 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