在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
子句來適應您的需求。