مقدمه
توابع پنجره یک ویژگی قدرتمند در SQL هستند که برای انجام محاسبات در مجموعه ای از ردیف های مربوط به ردیف فعلی استفاده می شود. برخلاف توابع جمع، توابع پنجره ردیف ها را در یک خروجی گروه بندی نمی کنند. آنها یک نتیجه را برای هر ردیف در حالی که زمینه مجموعه داده را حفظ می کنند، برمی گردانند.
در این مقاله، ما برخی از توابع رایج پنجره SQL را بررسی خواهیم کرد (ROW_NUMBER()
، RANK()
، DENSE_RANK()
، NTILE()
، LEAD()
، و LAG()
) با مثال.
جدول نمونه: داده های فروش
ما از جدول فروش زیر برای نشان دادن عملکردهای پنجره استفاده می کنیم:
شناسه فروش |
شناسه مشتری |
محصول |
منطقه |
مقدار |
تاریخ فروش |
---|---|---|---|---|---|
1 |
101 |
لپ تاپ |
شمال |
1200 |
05/01/2023 |
2 |
102 |
تبلت |
شمال |
800 |
15-02-2023 |
3 |
103 |
تلفن |
شمال |
800 |
2023-03-10 |
4 |
104 |
تبلت |
شمال |
500 |
01-04-2023 |
5 |
105 |
لپ تاپ |
جنوب |
1300 |
05-05-2023 |
6 |
106 |
تبلت |
جنوب |
700 |
2023-06-20 |
7 |
107 |
تلفن |
غرب |
900 |
15-07-2023 |
8 |
108 |
لپ تاپ |
شرق |
1300 |
10-08-2023 |
1. ROW_NUMBER()
تابع ROW_NUMBER() یک عدد منحصر به فرد به هر سطر در یک پارتیشن اختصاص می دهد که توسط یک ستون مشخص مرتب شده است.
وظیفه: یک شماره ردیف منحصر به فرد به هر فروش در یک منطقه بر اساس مبلغ فروش (بیشترین به کمترین) اختصاص دهید.
شناسه فروش، منطقه، مبلغ، ROW_NUMBER() OVER (پارتیشن بر اساس منطقه به ترتیب مبلغ DESC) به عنوان شماره ردیف از...