Sokan Academy

Window Frame زیرمجموعه‌ای از ردیف‌ها را در یک پارتیشن تعریف می‌کند که یک Window Function روی آن کار می‌کند و مشخص می کند که کدام ردیف ها در محاسبه نسبت به ردیف فعلی گنجانده شده اند. Window Frame با استفاده از ROWS یا RANGE در عبارت OVER هنگام استفاده از Window Functionها در SQL تعریف می شود.

بیایید Window Frame را با یک مثال بررسی کنیم:

فرض کنید جدولی به نام sales با داده های زیر دارید:

Sale_Date

Sales_Amount

2023-01-01100
2023-01-02150
2023-01-03200
2023-01-0450
2023-01-05300

شما می خواهید مجموع Sales_Amount را برای هر ردیف با در نظر گرفتن دو ردیف قبلی و ردیف فعلی محاسبه کنید.

این بدان معنی است که شما می خواهید مجموع Sales_Amount را برای ردیف فعلی و دو ردیف قبل از آن در همان "پارتیشن" محاسبه کنید.

در اینجا کوئری SQL برای رسیدن به این هدف با استفاده از عبارت ROWS برای تعریف Window Frame آمده است:

SELECT
  Sale_Date,
  Sales_Amount,
  SUM(Sales_Amount) OVER(ORDER BY Sale_Date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS Cumulative_Sum
FROM sales
ORDER BY Sale_Date;

در این کوئری:

ORDER BY Sale_Date ترتیب پردازش ردیف‌ها در پارتیشن را مشخص می‌کند و اطمینان می‌دهد که آنها به ترتیب زمانی پردازش می‌شوند.

ROWS BETWEEN 2 PRECEDING AND CURRENT ROW ردیف های بین 2 ردیف قبلی و فعلی Window Freame را مشخص می کند. این شامل ردیف فعلی (CURRENT ROW) و دو ردیف بلافاصله قبل از آن (2 PRECEDING) است.

نتیجه این است:

Sale_Date

Sales_Amount

Cumulative_Sum

2023-01-01100100
2023-01-02150250
2023-01-03200450
2023-01-0450400
2023-01-05300550

همانطور که می بینید، Widnow Frame مشخص شده توسط ROWS BETWEEN 2 PRECEDING AND CURRENT ROW تضمین می کند که Window Function مجموع تجمعی هر ردیف (ردیف فعلی و دو ردیف قبل از آن) را محاسبه می کند.

این فقط یک نمونه از این است که چگونه می توانید از Window Frame برای انجام محاسبات در زیر مجموعه خاصی از ردیف ها در داده های خود استفاده کنید.

sql

sokan-academy-footer-logo
کلیه حقوق مادی و معنوی این وب‌سایت متعلق به سکان آکادمی می باشد.