عملکرد PRODUCT جدید در SQL Server 2025: راهنمای جامع و کاربردی
نسخه 2025 SQL Server یک تابع تجمیعی (aggregate function) قدرتمند و جدید به نام PRODUCT را معرفی میکند. این تابع به شما امکان میدهد تا حاصل ضرب مجموعهای از مقادیر عددی را محاسبه کنید؛ قابلیتی که مدتها مورد انتظار بسیاری از توسعهدهندگان بوده است. پیش از این، دستیابی به چنین محاسباتی نیازمند راهکارهای پیچیده با استفاده از لگاریتمها یا توابع سفارشی CLR بود. تابع PRODUCT این عملیات را به طور قابل توجهی ساده میکند و کوئری نویسی را بهینهتر میسازد.
تابع PRODUCT یک تابع تجمیعی است که حاصل ضرب تمام مقادیر غیر NULL را در یک گروه برمیگرداند. همانند سایر توابع تجمیعی، میتوان آن را با عبارت GROUP BY یا به عنوان یک تابع پنجرهای (window function) با OVER() استفاده کرد.
سینتکس پایه برای تابع PRODUCT بسیار ساده است:
PRODUCT ( [ ALL | DISTINCT ] expression )
و یا به عنوان یک تابع پنجرهای:
PRODUCT ( [ ALL | DISTINCT ] expression ) OVER ( [ ] [ ] )
در این فرمولها:
- ALL: (پیشفرض) حاصل ضرب را روی تمام مقادیر محاسبه میکند.
- DISTINCT: حاصل ضرب را فقط روی مقادیر منحصربهفرد محاسبه میکند.
- expression: یک عبارت عددی که قرار است تجمیع شود.
مثال 1: استفاده پایه با GROUP BY
فرض کنید یک جدول از دادههای فروش دارید و میخواهید حاصل ضرب مقادیر فروخته شده را برای هر دسته محصول محاسبه کنید. با استفاده از تابع PRODUCT جدید در SQL Server 2025، این کار به آسانی انجام میشود.
جدول SalesDetails را در نظر بگیرید:
| Category | Quantity | Price |
|---|---|---|
| A | 2 | 10 |
| A | 3 | 12 |
| B | 5 | 8 |
| B | 1 | 15 |
| C | 4 | 20 |
برای به دست آوردن حاصل ضرب تعداد (Quantity) برای هر دسته:
SELECT
Category,
PRODUCT(Quantity) AS ProductOfQuantities
FROM
SalesDetails
GROUP BY
Category;
خروجی مورد انتظار این کوئری تحلیل داده، به شکل زیر خواهد بود:
| Category | ProductOfQuantities |
|---|---|
| A | 6 |
| B | 5 |
| C | 4 |
مثال 2: استفاده از PRODUCT به عنوان تابع پنجرهای
شما همچنین میتوانید از PRODUCT به عنوان یک تابع پنجرهای استفاده کنید. این قابلیت در SQL Server 2025 بسیار مفید است، به خصوص زمانی که میخواهید حاصل ضرب را روی یک پارتیشن خاص از دادههای خود محاسبه کنید، بدون اینکه ردیفها را ادغام کنید. این کاربرد در تحلیلهای پیشرفتهتر دادههای عددی بسیار کاربردی است.
بیایید حاصل ضرب تجمعی (running product) مقادیر را در هر دسته محاسبه کنیم:
SELECT
Category,
Quantity,
PRODUCT(Quantity) OVER (PARTITION BY Category ORDER BY Quantity) AS RunningProduct
FROM
SalesDetails;
خروجی مورد انتظار (با فرض ORDER BY Quantity برای حاصل ضرب تجمعی):
| Category | Quantity | RunningProduct |
|---|---|---|
| A | 2 | 2 |
| A | 3 | 6 |
| B | 1 | 1 |
| B | 5 | 5 |
| C | 4 | 4 |
مثال 3: استفاده از DISTINCT
اگر فقط میخواهید مقادیر منحصربهفرد را در یک گروه ضرب کنید، میتوانید از کلمه کلیدی DISTINCT استفاده کنید. این ویژگی باعث میشود که کوئریهای شما در SQL Server 2025 بسیار دقیقتر و منعطفتر شوند.
SELECT
Category,
PRODUCT(DISTINCT Quantity) AS ProductOfDistinctQuantities
FROM
SalesDetails
GROUP BY
Category;
اگر دسته A دارای مقادیر (2، 2، 3) بود، PRODUCT(Quantity) مقدار 12 را برمیگرداند، اما PRODUCT(DISTINCT Quantity) مقدار 6 (2 * 3) را برمیگرداند. این تمایز در محاسبات ضربی برای تحلیل دقیقتر دادهها اهمیت دارد.
مزایا و موارد استفاده تابع PRODUCT در SQL Server 2025
تابع PRODUCT جدید در SQL Server 2025، محاسبات مربوط به تجمیعهای ضربی را به طور قابل توجهی ساده میکند. این تابع نیاز به تبدیلهای ریاضی پیچیده یا راهحلهای سفارشی را از بین میبرد و منجر به کوئریهای تمیزتر، خواناتر و اغلب با عملکرد بهتر میشود که برای هر متخصص سئو یا تحلیلگر دادهای حائز اهمیت است.
موارد استفاده رایج این تابع عبارتند از:
- مدلسازی مالی: محاسبه نرخهای رشد مرکب یا بازدهها.
- کاربردهای علمی: هر سناریویی که نیازمند حاصل ضرب یک سری از اندازهگیریها باشد.
- مدیریت موجودی: محاسبه عوامل ترکیبی در خطوط تولید.
این تابع یک افزودنی بسیار مفید است که قابلیتهای تحلیلی SQL Server را افزایش میدهد و کار را برای توسعهدهندگان و تحلیلگران داده برای استخراج بینشهای عمیقتر از دادههای خود آسانتر میکند. عملکرد جدید SQL Server 2025، ابزاری قدرتمند برای بهینهسازی کوئری و تحلیل دادههای پیچیده به شمار میرود.