摘要:在本教學中,您將學習如何使用 SQL FIRST_VALUE()
函數來傳回已排序數值集合中的第一個值。
FIRST_VALUE() 函數概述
FIRST_VALUE()
是一個視窗函數,它會傳回已排序數值集合中的第一個值。
以下說明 FIRST_VALUE()
函數的語法
FIRST_VALUE(expression) OVER (
partition_clause
order_clause
frame_clause
)
Code language: SQL (Structured Query Language) (sql)
在此語法中
expression
從分割區或結果集中第一列傳回 expression
的值。
OVER
子句包含三個子句:partition_clause
、order_clause
和 frame_clause
。
partition_clause
partition_clause
子句的語法如下
PARTITION BY expr1, expr2, ...
Code language: SQL (Structured Query Language) (sql)
PARTITION BY
子句會將結果集的列分割成數個分割區,FIRST_VALUE()
函數會應用於這些分割區。如果您省略 PARTITION BY
子句,函數會將整個結果集視為單一分割區。
order_clause
order_clause
子句會排序 FIRST_VALUE()
函數所套用分割區中的列。ORDER BY
子句的語法如下
ORDER BY expr1 [ASC | DESC], expr2, ...
Code language: SQL (Structured Query Language) (sql)
frame_clause
frame_clause
定義目前分割區的子集(或框架)。請查看視窗函數教學以取得框架子句的詳細資訊。
SQL FIRST_VALUE() 函數範例
我們將使用範例資料庫中的 employees
和 departments
表格來示範 FIRST_VALUE()
函數

A) 在結果集上使用 SQL FIRST_VALUE() 函數的範例
以下陳述式會找出公司中薪水最低的員工
SELECT
first_name,
last_name,
salary,
FIRST_VALUE (first_name) OVER (
ORDER BY salary
) lowest_salary
FROM
employees e;
Code language: SQL (Structured Query Language) (sql)
這是部分輸出

在這個範例中,ORDER BY
子句依照薪水排序員工,而 FIRST_VALUE()
選取薪水最低的員工的名字。
B) 在分割區上使用 SQL FIRST_VALUE() 的範例
以下陳述式會傳回每個部門中薪水最低的員工。
SELECT
first_name,
last_name,
department_name,
salary,
FIRST_VALUE (CONCAT(first_name,' ',last_name)) OVER (
PARTITION BY department_name
ORDER BY salary
) lowest_salary
FROM
employees e
INNER JOIN departments d
ON d.department_id = e.department_id;
Code language: SQL (Structured Query Language) (sql)
以下顯示輸出

在這個範例中
- 首先,
PARTITION BY
子句依部門分割員工。 - 然後,
ORDER BY
子句依薪水從低到高排序每個部門的員工。 - 最後,
FIRST_VALUE()
應用於每個分割區中已排序的列。它選取每個部門中薪水最低的員工。
在本教學中,您已學習如何使用 SQL FIRST_VALUE()
函數來取得已排序數值集合中的第一個值。
這個教學對您有幫助嗎?