什么是oracle的lag函數(shù)

小樊
112
2024-09-15 19:29:55
欄目: 云計(jì)算

Oracle的LAG函數(shù)是一種分析函數(shù),用于在查詢結(jié)果中獲取當(dāng)前行之前的某一行的數(shù)據(jù)

LAG函數(shù)的語(yǔ)法如下:

LAG(expr, offset, default) OVER (
    [PARTITION BY partition_expression]
    ORDER BY order_expression
)

其中:

  • expr:要獲取偏移行的值的表達(dá)式。
  • offset:可選參數(shù),指定要偏移的行數(shù)。默認(rèn)值為1,表示獲取當(dāng)前行之前的一行數(shù)據(jù)。
  • default:可選參數(shù),指定當(dāng)偏移行不存在時(shí)返回的默認(rèn)值。
  • PARTITION BY子句:將結(jié)果集劃分為多個(gè)分區(qū),以便在每個(gè)分區(qū)內(nèi)進(jìn)行LAG操作。
  • ORDER BY子句:指定在分區(qū)內(nèi)對(duì)行進(jìn)行排序的順序。

LAG函數(shù)常用于計(jì)算累積總和、比較相鄰行的值等場(chǎng)景。例如,以下查詢使用LAG函數(shù)計(jì)算每個(gè)部門(mén)的員工薪資增長(zhǎng)率:

SELECT
    department_id,
    employee_id,
    salary,
    LAG(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS prev_salary,
    ((salary - LAG(salary) OVER (PARTITION BY department_id ORDER BY hire_date)) / LAG(salary) OVER (PARTITION BY department_id ORDER BY hire_date)) * 100 AS salary_growth_rate
FROM
    employees;

在這個(gè)例子中,我們首先使用LAG函數(shù)獲取每個(gè)員工在同一部門(mén)中的前一個(gè)員工的薪資(prev_salary),然后計(jì)算當(dāng)前員工的薪資與前一個(gè)員工的薪資之間的差異百分比(salary_growth_rate)。

0