LAST_VALUE ФУНКЦИЯ

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

Описание

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

Синтаксис

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

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

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

LAST_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_clause Description
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW Последняя строка в окне изменяется с изменением текущей строки (по умолчанию)
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING Первая строка в окне изменяется с изменением текущей строки
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING Все строки включены в окно независимо от текущей строки

Функция LAST_VALUE возвращает последнее значение в упорядоченном наборе значений из аналитического окна.

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

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

Получить DDL/DML

Пример

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

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

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

В этом примере у нас есть таблица employees со следующими данными:

EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY DEPARTMENT_ID
100 Anita Borg 2500 10
200 Alfred Aho 3200 10
300 Bill Gates 2100 10
400 Linus Torvalds 3700 20
500 Michael Dell 3100 20
600 Nello Cristianini 2950 20
700 Rasmus Lerdorf 4900 20
800 Steve Jobs 2600 30
900 Thomas Kyte 5000 30

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

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

HIGHEST
5000

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

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

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

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

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

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

DEPARTMENT_ID HIGHEST
10 3200
20 4900

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

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

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

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

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

DEPARTMENT_ID LOWEST
10 2100
20 2950

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