sql last_value函數(shù)的語(yǔ)法結(jié)構(gòu)

sql
小樊
82
2024-09-09 05:46:19
欄目: 云計(jì)算

LAST_VALUE() 是一個(gè) SQL 窗口函數(shù),用于返回指定窗口中的最后一個(gè)值

LAST_VALUE(expression) OVER (
    [PARTITION BY partition_expression1, partition_expression2, ...]
    ORDER BY order_expression1, order_expression2, ...
    [ROWS/RANGE frame_specification]
)
  • expression:要計(jì)算最后一個(gè)值的列或表達(dá)式。
  • PARTITION BY(可選):將結(jié)果集劃分為多個(gè)分區(qū),每個(gè)分區(qū)都會(huì)應(yīng)用 LAST_VALUE() 函數(shù)。如果省略此子句,則整個(gè)結(jié)果集被視為一個(gè)分區(qū)。
  • ORDER BY:確定在窗口中的行順序,這對(duì)于確定“最后一個(gè)值”至關(guān)重要。
  • ROWS/RANGE(可選):定義窗口的范圍。默認(rèn)情況下,窗口范圍包括從當(dāng)前行到窗口末尾的所有行。你可以使用 ROWSRANGE 子句自定義窗口范圍。

以下是一個(gè)使用 LAST_VALUE() 函數(shù)的示例:

SELECT
    employee_id,
    department_id,
    salary,
    LAST_VALUE(salary) OVER (
        PARTITION BY department_id
        ORDER BY employee_id
        ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
    ) as last_salary_in_department
FROM employees;

在這個(gè)示例中,我們查詢員工表,并使用 LAST_VALUE() 函數(shù)獲取每個(gè)部門的最后一個(gè)員工的薪水。我們按照 department_id 對(duì)結(jié)果集進(jìn)行分區(qū),并按照 employee_id 對(duì)每個(gè)分區(qū)內(nèi)的行進(jìn)行排序。我們還指定了窗口范圍,使其包括從當(dāng)前行到窗口末尾的所有行。

0