Oracle的LAG函數和LEAD函數都是分析函數,用于在查詢結果中獲取同一結果集中前一行或后一行的數據
語法:
LAG(column_name, offset, default_value) OVER (ORDER BY order_by_column)
示例:
SELECT employee_id, salary, LAG(salary, 1, 0) OVER (ORDER BY employee_id) AS previous_salary
FROM employees;
語法:
LEAD(column_name, offset, default_value) OVER (ORDER BY order_by_column)
示例:
SELECT employee_id, salary, LEAD(salary, 1, 0) OVER (ORDER BY employee_id) AS next_salary
FROM employees;
總結: LAG函數和LEAD函數的主要區別在于它們獲取數據的方向。LAG函數用于獲取前一行的數據,而LEAD函數用于獲取后一行的數據。這兩個函數在處理需要比較相鄰行數據的場景時非常有用,例如計算累計總和、排名或比較同一列中不同行的值。