SELECT empno, sal,
LEAD(sal, 1, 0) OVER (PARTITION BY dept ORDER BY id) NEXT_SAL,
CASE WHEN sal <= LEAD(sal, 1, MAX(SAL)) OVER (PARTITION BY dept ORDER BY sal)
THEN 'OK'
ELSE 'NOT OK'
END STATUS
FROM emp
ORDER BY deptno, sal DESC;
Здесь, если вы получаете все состояния как «ОК», тогда значение находится в порядке увеличения, в противном случае есть некоторое уменьшение.
LEAD имеет возможность вычислить выражениев следующих строках (строки, которые идут после текущей строки) и возвращают значение в текущую строку.Общий синтаксис LEAD показан ниже:
LEAD (sql_expr, offset, default) OVER (analytic_clause)
- sql_expr - это выражение для вычисления изначальная строка.
- смещение - это индекс начальной строки относительно текущей строки.смещение является положительным целым числом со значением по умолчанию 1.
- default - это значение, которое возвращается, если смещение указывает на строку вне диапазона разделения.