Функция FIRST_VALUE в SQL Server
Функция FIRST_VALUE()
в SQL Server извлекает первое значение из указанного столбца. Она работает вместе с предложением ORDER BY
для определения последовательности и, если нужно или необходимо, предложением PARTITION BY
для создания разделов данных перед получением первого значения. Эта функция полезна для получения крайнего значения на основе заданного порядка в наборе данных.
- Функция была введена в SQL Server2012
- Получает начальное значение из указанного столбца
- Предложение
ORDER BY
является обязательным - Может быть использовано предложение
PARTITION BY
Синтаксис: FIRST_VALUE (Имя_колонки) OVER (Порядок по COLUMN1, COLUMN2, COLUMN3...).
Мы будем использовать таблицу, приведенную ниже. Предоставленный код доступен на то случай, если вы хотите поэкспериментировать с ним.
CREATE TABLE Employees(
ID INT ,
NAME VARCHAR(50),
GENDER VARCHAR(10),
SALARY INT)
INSERT INTO Employees VALUES(
1, 'Joe', 'Male', 10000
),
(
2, 'Ryan', 'Male', 20000
),
(
3, 'Hannah', 'Female', 30000
),(
4, 'Joy', 'Female', 40000
),
(
5, 'Rash', 'Male', 50000
),
(
6, 'Halima', 'Female', 60000
),
(
7, 'Chris', 'Male', 70000
),
(
8, 'Judith', 'Female', 80000
)
Функция First_Value без PARTITION BY
SELECT Name, Gender, Salary,
FIRST_VALUE(Name) over(order by salary) as FirstValue
from Employees
Функция FIRST_VALUE
в SQL Server работает, если указать столбец, из которого вы хотите получить начальное значение. Она требует использования ключевого слова OVER
вместе с предложением ORDER BY
для упорядочивания набора результатов. Например, мы применили эту функцию к столбцу с именем "name и упорядочили его соответствующим образом, выбрав "JOE" в качестве первого значения, функция вернет "JOE" для всех строк, эффективно заполнив весь набор результатов этим конкретным начальным значением из столбца "name". Вот ожидаемый набор результатов.
Функция First_Value с PARTITION BY
SELECT Name, Gender, Salary,
FIRST_VALUE(Name) over(Partition by Gender order by salary) as FirstValue
from Employees
Функция FIRST_VALUE
в SQL Server обладает гибкостью, позволяющей при необходимости включать предложение PARTITION BY
. Как и в предыдущем примере, она извлекает начальное значение из указанного столбца. Однако при использовании PARTITION BY
функция разделяет набор результатов на основе указанной категории, как в случае с разделением по "GENDER", создавая отдельные разделы для анализа или извлечения начальных значений в каждом отдельном разделе. Вот ожидаемый результат.
Счастливого вам обучения!