Разница между ключевыми словами RANGE и ROWS при определении окна в Oracle заключается в том, как они устанавливают «фрейм» окна — набор строк относительно текущей строки, который будет использоваться для вычислений: 2
- ROWS основан на физических строках. 1 При использовании ROWS определение окна основывается на физическом положении строк относительно текущей строки. 1 Например, 1 PRECEDING означает одну строку до текущей. 1 Определение окна с помощью ROWS чётко ограничивает количество строк, которые включаются в окно, делая его предсказуемым и конкретным. 1
- RANGE основан на значениях. 1 RANGE, в отличие от ROWS, определяет границы окна на основе значений столбцов, упорядоченных в соответствии с ORDER BY в оконной функции. 1 Границы, определённые с помощью RANGE, могут варьироваться в зависимости от данных, что делает окно гибким, но потенциально менее предсказуемым. 1