ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Функция FIRST_VALUE в MySQL

MySQL. Математические функции

Описание: в этой статье вы узнаете, как использовать функцию FIRST_VALUE() в MySQL для получения первой строки фрейма, раздела или набора результатов.

 

Обзор функции FIRST_VALUE()

FIRST_VALUE() — это функция окна , что позволяет выбрать первую строку оконной рамы, перегородки или результирующего набора.

Следующее иллюстрирует синтаксис функции FIRST_VALUE():

FIRST_VALUE(expression) OVER (
[partition_clause]
[order_clause]
[frame_clause]
)

 

В этом синтаксисе:

 

expression

Функция FIRST_VALUE() возвращает значение из expression из первой строки оконного фрейма.

Предложение OVER состоит из трех положений: partition_clause, order_clause и frame_clause.

 

partition_clause

Предложение partition_clause разделяет строки наборов результатов на разделы, к которым функция применяется независимо. partition_clause имеет следующий синтаксис:

PARTITION BY expr1, expr2, ...

 

order_clause

Предложение order_clause определяет логический порядок строк в каждом разделе, в котором работает функция FIRST_VALUE(). Ниже показан синтаксис order_clause:

ORDER BY expr1 [ASC|DESC], expr2 [ASC|DESC], ...

 

frame_clause

frame_clause определяет подмножество (или фрейм) текущего раздела. Для получения подробной информации о синтаксисе предложения frame, посмотрите его в руководстве по оконным функциям.

 

Примеры функций FIRST_VALUE() в MySQL

Следующие операторы создают новую таблицу с именем overtime и вставляют образцы данных для демонстрации:

CREATE TABLE overtime (
employee_name VARCHAR(50) NOT NULL,
department VARCHAR(50) NOT NULL,
hours INT NOT NULL,
PRIMARY KEY (employee_name , department)
);
INSERT INTO overtime(employee_name, department, hours)
VALUES('Alex A','Accounting',45),
('Destroyer D','Finance',33),
('AndreyEx A','IT',95),
('Maria M','Marketing',87);

 

1) Использование функции FIRST_VALUE() в MySQL на примере всего набора результатов запроса

Следующий оператор получает имя сотрудника, сверхурочную работу и сотрудника, который имеет наименьшее количество сверхурочной работы:

SELECT
employee_name,
hours,
FIRST_VALUE(employee_name) OVER (
ORDER BY hours
) least_over_time
FROM
overtime;

 

В этом примере предложение ORDER BY упорядочило строки в наборе результатов по часам, а FIRST_VALUE() выбрала первую строку, указав сотрудника, у которого было меньше всего сверхурочных.

 

2) Использование FIRST_VALUE() в MySQL над примером раздела

Следующее утверждение находит сотрудника, который имеет наименьшее количество сверхурочных в каждом отделе:

SELECT
employee_name,
department,
hours,
FIRST_VALUE(employee_name) OVER (
PARTITION BY department
ORDER BY hours
) least_over_time
FROM
overtime;

 

В этом примере:

В этой статьи вы узнали, как использовать функцию FIRST_VALUE() в MySQL для получения первой строки оконного фрейма.

Exit mobile version