В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию CUME_DIST с синтаксисом и примерами.
Описание
Функция Oracle/PLSQL CUME_DIST возвращает кумулятивное распределение значений в группе значений. Функция CUME_DIST вернет значение, которое > 0 и <= 1. Функцию CUME_DIST можно использовать двумя способами - в качестве агрегатной функции или в качестве аналитической функции.
Синтаксис № 1 функции CUME_DIST - используется как агрегатная функция
Как агрегатная функция, функция CUME_DIST возвращает относительную позицию строки в группе строк.
Синтаксис для функции CUME_DIST при использовании в качестве агрегатной функции:
Параметры или аргументы
expression1 .. expression_n может быть один или несколько выражений, которые идентифицируют уникальную строку в группе.
Примечание
- Функция CUME_DIST возвращает numeric значение.
- Количество expression в первом списке выражений, должно быть таким же, как и в операторе ORDER BY.
- Список выражений, позиции и типы данных в первом списке должны соответствовать c выражениями, как и в операторе ORDER BY.
Применение
Функцию CUME_DIST можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i
Пример (как агрегирующая функция)
Рассмотрим пример функции CUME_DIST чтобы понять, как использовать функцию CUME_DIST в Oracle/PLSQL.
1 2 |
select CUME_DIST(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees; |
Запрос SQL вернет кумулятивное распределение сотрудников с зарплатой в $1000 и бонус в размере $ 500 из таблицы employees.
Синтаксис № 2 функции CUME_DIST - используется как аналитическая функция
Как аналитическая функция, функция CUME_DIST возвращает относительную позицию значения в группе значений.
Синтаксис функции CUME_DIST при использовании в качестве аналитической функции:
Функция CUME_DIST возвращает numeric значение.
Применение
Функцию CUME_DIST можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
Пример (как аналитическая функция)
1 2 3 4 |
select employee_name, salary, CUME_DIST() OVER (PARTITION BY department ORDER BY salary) from employees where department = 'Marketing'; |
Запрос SQL вернет процент заработной платы для каждого сотрудника в department - 'Marketing'.