MyTetra Share
Делитесь знаниями!
DENSE_RANK( expression1, … expression_n ) WITHIN GROUP ( ORDER BY expression1, … expression_n )
Время создания: 13.05.2017 22:29
Раздел: PL/SQL - Синтаксис - Функции - Математические функции
Запись: xintrea/mytetra_db_mcold/master/base/1494703780tdr8ag6zz6/text.html на raw.githubusercontent.com

DENSE_RANK ФУНКЦИЯ

Узнайте, как использовать Oracle / PLSQL функцию DENSE_RANK с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL DENSE_RANK возвращает ранг строки в упорядоченной группе строк. Она очень похожа на функцию RANK. Однако функция RANK может вызвать непоследовательное ранжирование если тестируемые значения одинаковы. Поэтому, функция DENSE_RANK всегда будет приводить к последовательному ранжированию строк.

Синтаксис

Синтаксис функции Oracle / PLSQL DENSE_RANK:

DENSE_RANK( expression1, … expression_n ) WITHIN GROUP ( ORDER BY expression1, … expression_n )

Параметры или аргументы

expression1 .. expression_n может быть одно или несколько выражений, которые идентифицируют уникальную строку в группе..

Примечание

Количество expression в первом списке выражений, должно быть таким же, как и в условии ORDER BY.

Список выражений позиции и типы данных в первом списке должны быть совместимы c выражениями, как и в условии ORDER BY.

Применение

Функцию DENSE_RANK можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Рассмотрим несколько примеров функции DENSE_RANK и изучим, как использовать функцию DENSE_RANK в Oracle / PLSQL.

Пример (как агрегирующая функция)


Oracle PL/SQL


1

select DENSE_RANK(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;

Запрос SQL вернет ранг строки сотрудника с окладом в $ 1000 и бонус в размере $ 500 из таблицы employees.

DENSE_RANK КАК АНАЛИТИЧЕСКАЯ ФУНКЦИЯ

Как аналитическая функция, функция DENSE_RANK возвращает ранг каждой строки запроса с соответствием для других строк.

Синтаксис функции DENSE_RANK при использовании в качестве аналитической функции:

DENSE_RANK() OVER ( [ query_partition_clause] ORDER BY clause )

функцию DENSE_RANK можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример (как аналитическая функция)


Oracle PL/SQL


1

2

3

4

select employee_name, salary,
DENSE_RANK() OVER (PARTITION BY department ORDER BY salary)
from employees
where department = 'Marketing';

Запрос SQL вернет всех сотрудников, работающих в отделе маркетинга, а затем рассчитать ранг для каждого уникальную зарплату в отделе маркетинга. Если у двух сотрудников была одинаковая зарплату, функция DENSE_RANK вернется тот же ранг, для обоих сотрудников.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования