是的,Oracle的LAG函數可以根據自定義的排序進行計算。LAG函數用于獲取窗口中當前行之前的某一行的值。你可以在LAG函數中使用ORDER BY子句來指定自定義排序。
以下是一個使用LAG函數并根據自定義排序的示例:
SELECT empno, sal,
LAG(sal, 1) OVER (ORDER BY sal DESC) AS prev_sal
FROM emp;
在這個示例中,我們使用LAG函數獲取每個員工的薪水(sal)以及薪水高于他們的上一個員工的薪水(prev_sal)。我們通過ORDER BY子句按照薪水降序排列(從高到低)。
注意:如果需要對多個列進行排序,可以在ORDER BY子句中添加多個列名,用逗號分隔。例如:ORDER BY sal DESC, hiredate ASC
。