温馨提示×

什么是oracle的lag函数

小樊
137
2024-09-15 19:29:55
栏目: 云计算

Oracle的LAG函数是一种分析函数,用于在查询结果中获取当前行之前的某一行的数据

LAG函数的语法如下:

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

其中:

  • expr:要获取偏移行的值的表达式。
  • offset:可选参数,指定要偏移的行数。默认值为1,表示获取当前行之前的一行数据。
  • default:可选参数,指定当偏移行不存在时返回的默认值。
  • PARTITION BY子句:将结果集划分为多个分区,以便在每个分区内进行LAG操作。
  • ORDER BY子句:指定在分区内对行进行排序的顺序。

LAG函数常用于计算累积总和、比较相邻行的值等场景。例如,以下查询使用LAG函数计算每个部门的员工薪资增长率:

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;

在这个例子中,我们首先使用LAG函数获取每个员工在同一部门中的前一个员工的薪资(prev_salary),然后计算当前员工的薪资与前一个员工的薪资之间的差异百分比(salary_growth_rate)。

0