RANK ФУНКЦИЯ

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

Описание

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

Синтаксис

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

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

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

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

Примечание

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

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

Применение

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

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

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

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

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

RANK – В КАЧЕСТВЕ АНАЛИТИЧЕСКОЙ ФУНКЦИИ

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

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

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

Применение

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

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

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

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

Смотри также в категории: Числовые / математические функции Oracle / PLSQL