RANK ФУНКЦИЯ

В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию RANK с синтаксисом и примерами.

Описание

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

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

Синтаксис № 1 функция RANK - используется в качестве агрегатной функции

Как агрегатная функция, функция RANK возвращает ранг строки в группе строк.

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

RANK( expr1 [, expr2, ... expr_n ] ) WITHIN GROUP ( ORDER BY expr1 [, expr_2, ... expr_n ] )

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

expr1 - первое выражение, которое идентифицирует уникальную строку в группе.

expr2, ... expr_n - необязательный. Дополнительные выражения, которые идентифицируют уникальную строку в группе.

Примечание

  • Функция RANK возвращает numeric значение.
  • В первом списке выражений должно быть столько же выражений, сколько в операторе ORDER BY.
  • Списки выражений совпадают по позициям, поэтому типы данных должны быть совместимы между выражениями в первом списке, так и в списке оператора ORDER BY.

Применение

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

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

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

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

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

Синтаксис № 2 функция RANK - используется в качестве аналитической функции

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

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

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

Функция RANK возвращает numeric значение.

Применение

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

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

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

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