Skip to content

Понимание предложения 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?

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.