在Oracle中,LAG()
函数允许您在一个结果集的行中访问前一行的数据
SELECT
emp_id,
dept_id,
salary,
LAG(salary) OVER (PARTITION BY dept_id ORDER BY emp_id) as prev_dept_salary,
LAG(salary) OVER (ORDER BY emp_id) as prev_global_salary
FROM employees;
这个查询将显示每个员工的ID、部门ID、工资以及他们所在部门和全局的前一个员工的工资。
在这个例子中,我们使用了两个LAG()
函数,但是它们有不同的窗口:
LAG(salary) OVER (PARTITION BY dept_id ORDER BY emp_id)
:此函数计算相同部门内前一个员工的工资。LAG(salary) OVER (ORDER BY emp_id)
:此函数计算按员工ID排序的全局前一个员工的工资。您可以根据需要调整PARTITION BY
和ORDER BY
子句来适应您的需求。