FIRST_VALUE ФУНКЦИЯ

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

Описание

Oracle/PLSQL функция FIRST_VALUE возвращает первое значение в упорядоченном наборе значений из аналитического окна. Она похожа на функции FIRST_VALUE и NTH_VALUE.

Синтаксис

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

FIRST_VALUE (expression)
[RESPECT NULLS | IGNORE NULLS]
OVER ([query_partition_clause] [order_by_clause [windowing_clause]])

Следующий синтаксис также является принятым форматом:

FIRST_VALUE (expression [RESPECT NULLS | IGNORE NULLS])
OVER ([query_partition_clause] [order_by_clause [windowing_clause]])

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

expression Столбец или выражение, для которого вы хотите вернуть первое значение.

RESPECT NULLS | IGNORE NULLS Необязательный. Он определяет, включены ли значения NULL или игнорируются в аналитическом окне. Если этот параметр опущен, значением по умолчанию является RESPECT NULLS, который включает значения NULL.

query_partition_clause Необязательный. Он используется для разделения результатов на группы на основе одного или нескольких выражений.

order_by_clause Необязательный. Он используется для упорядочивания данных в каждом разделе.

windowing_clause Необязательный. Он определяет строки в аналитическом окне для оценки, и важно, чтобы вы использовали правильное окно windowing_clause, или вы можете получить неожиданные результаты. Это может быть значение, такое как:

windowing_clauseDescription
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROWПоследняя строка в окне изменяется с изменением текущей строки (по умолчанию)
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWINGПервая строка в окне изменяется с изменением текущей строки
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWINGВсе строки включены в окно независимо от текущей строки
  • Функция FIRST_VALUE возвращает первое значение, представленное его типом данных.

Применение

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

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

DDL / DML для примеров

Если вы хотите следовать этому руководству, используйте DDL для создания таблицы employees и DML для заполнения данных. Затем попробуйте примеры в вашей собственной базе данных!

Получить DDL / DML

Пример

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

Самая высокая зарплата для всех сотрудников

Начнем с простого примера и воспользуйтесь функцией FIRST_VALUE, чтобы вернуть самую высокую зарплату в таблице employees. В этом примере нам не потребуется запрос query_partition_clause, потому что мы оцениваем всю таблицу employees.
В этом примере у нас есть таблица employees со следующими данными:

EMPLOYEE_IDFIRST_NAMELAST_NAMESALARYDEPARTMENT_ID
100AnitaBorg250010
200AlfredAho320010
300BillGates210010
400LinusTorvalds370020
500MichaelDell310020
600NelloCristianini295020
700RasmusLerdorf490020
800SteveJobs260030
900ThomasKyte500030

Чтобы найти самую высокую зарплату, введите следующий SELECT:

Результат, который вы должны получить:

HIGHEST
5000

В этом примере FIRST_VALUE возвращает самое высокое значение salary (зарплаты), указанное FIRST_VALUE (salary). Аналитическое окно сортирует данные по зарплате в порядке убывания, как указано ORDER BY salary DESC. Параметр windowing_clause = RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING используется для обеспечения включения всех строк независимо от текущей строки.

И поскольку мы хотим получить самую высокую зарплату в таблице, нам не нужно было включать query_partition_clause для разделения данных.

Самая высокая зарплата по department_id

Теперь давайте покажем вам, как использовать функцию FIRST_VALUE с query_partition_clause. В следующем примере вернем самую высокую зарплату для department_id 10 и 20.

На основе той же таблицы employees введите следующий оператор SQL:

Вот результаты, которые вы должны получить:

DEPARTMENT_IDHIGHEST
103200
204900

В этом примере FIRST_VALUE возвращает самое высокое значение зарплаты, указанное FIRST_VALUE (salary). Аналитическое окно будет делить результаты по DEPARTMENT_ID и упорядочит данные по salary в порядке убывания, как указано PARTITION BY DEPARTMENT_ID ORDER BY зарплата DESC.

Самая низкая зарплата по department_id

Теперь давайте покажем вам, как использовать функцию FIRST_VALUE, чтобы вернуть самую низкую зарплату для department_id 10 и 20.

Снова на основе данных в таблице employee введите следующий оператор SQL:

Вот результаты, которые вы должны получить:

DEPARTMENT_IDLOWEST
102100
202950

В этом примере мы изменили порядок сортировки на возрастание по разделу, как указано PARTITION BY DEPARTMENT_ID ORDER BY salary ASC, и теперь мы получаем самую низкую зарплату, основанную на DEPARTMENT_ID.