Понимание предложения ROWS BETWEEN в SQL
Пересказ статьи Rahma Hassan. Understanding the “ROWS BETWEEN” Clause in SQL
В SQL предложение “ROWS BETWEEN” является мощным средством, которое позволяет вам определить окно строк для анализа или вычислений непосредственно в запросе. Указывая диапазон строк, вы можете выполнять вычисления или применять агрегатные функции к подмножеству данных, а не ко всему результирующему набору. Цель данной статьи - сделать понятным предложение “ROWS BETWEEN” и его использование на примерах.
Предложение ROWS BETWEEN
Предложение “ROWS BETWEEN” обычно используется в сочетании с оконными функциями, которые являются специальными функциями в SQL, работающими на конкретном подмножестве строк, называемых окном. Предложение “ROWS BETWEEN” дает возможность задать границы этого окна, указывая строки, которые должны участвовать в вычислениях.
Синтаксис:
ROWS BETWEEN нижняя_граница AND верхняя_граница
Границами могут служить любые их следующих пяти вариантов:
- UNBOUNDED PRECEDING - все строки выше текущей строки.
- n PRECEDING - n строк выше текущей строки.
- CURRENT ROW - только текущая строка.
- n FOLLOWING - n строк ниже текущей строки.
- UNBOUNDED FOLLOWING - все строки ниже текущей строки.
Рамка окна
Пример
Пусть у нас есть таблица “Sales” со столбцами “Product”, “Date” и “Revenue”. Предположим, что мы хотим вычислить средний доход (revenue) для каждого товара за последние три дня. Мы можем сделать это, используя предложение “ROWS BETWEEN” в следующем запросе:
SELECT Product, Date, Revenue,
AVG(Revenue) OVER (PARTITION BY Product ORDER BY Date
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS AverageRevenue
FROM Sales;
В этом примере мы разбиваем данные по столбцу “Product” и упорядочиваем их по столбцу “Date”. Предложение “ROWS BETWEEN 2 PRECEDING AND CURRENT ROW” указывает, что мы хотим включить текущую строку и две предыдущие строки в рамку окна.
Пример использования rows between на реальных данных
Заключение
Предложение “ROWS BETWEEN” в SQL позволяет задать границы окна, сосредоточив вычисления и агрегацию на подмножествах данных. Задавая начальную и конечную точки окна, вы можете выполнять серьезный анализ.
Ссылки по теме
1. Оконные функции T-SQL и производительность
2. Пересмотр производительности оконных агрегатов в SQL Server 2019
3. Обзор оконных функций PostgreSQL
4. Оконные функции или GROUP BY?
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой