Последние новости:

Поиск по сайту:

Так бывает довольно часто: главную трудность представляет не главная роль (Б. Шоу).

Функция FIRST_VALUE в MySQL

03.10.2019
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;

 

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

Статьи партнеров:

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить

Спасибо! Ваша заявка принята

close

Спасибо! Ваша заявка принята

close