فرض کنید جدولی به نام Sales دارید که شامل ستونهای ProductID، CategoryName، SubCategoryName و SalesAmount است. می خواهید مجموع فروش را بر اساس CategoryName و SubCategoryName تجزیه و تحلیل کنید. همچنین می خواهید مجموع کل فروش برای هر دسته و کل فروش کلی را مشاهده کنید.
در اینجا یک پرس و جو با استفاده از ROLLUP برای دستیابی به این هدف آورده شده است:
SQL
SELECT
CategoryName,
SubCategoryName,
SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY ROLLUP(CategoryName, SubCategoryName);
** خروجی:**
این پرس و جو خروجی زیر را برمیگرداند که مجموع فروش را در تمام سطوح گروه بندی، از کل فروش تا ترکیبات جداگانه CategoryName و SubCategoryName نشان میدهد:
| CategoryName | SubCategoryName | TotalSales |
|---|---|---|
| Total | NULL | 1000.00 |
| Electronics | NULL | 600.00 |
| Laptops | 400.00 | |
| Desktops | 200.00 | |
| Clothing | NULL | 400.00 |
| Shirts | 200.00 | |
| Pants | 200.00 |
توضیح:
ROLLUPمشابهCUBEاست، اما تنها سطوح سلسله مراتبی گروه بندی را برمیگرداند.- در این مثال،
ROLLUPسه سطح گروه بندی را برمیگرداند:- بدون گروه بندی (مجموع کل فروش)
- گروه بندی بر اساس
CategoryName(مجموع فروش برای هر دسته) - گروه بندی بر اساس هر دو
CategoryNameوSubCategoryName(مجموع فروش برای هر زیرمجموعه)
نکات:
- می توانید از توابع تجمعی دیگر مانند
AVG،MINوMAXبه جایSUMاستفاده کنید. - می توانید از نام مستعار برای ستون های گروه بندی شده در clause
SELECTاستفاده کنید. - می توانید از where clause برای فیلتر کردن داده ها قبل از گروه بندی استفاده کنید.
مثال با توابع تجمعی دیگر:
فرض کنید می خواهید میانگین و تعداد فروش را برای هر سطح گروه بندی، علاوه بر مجموع فروش، محاسبه کنید.
در اینجا یک پرس و جو با استفاده از ROLLUP و توابع تجمعی AVG و COUNT برای انجام این کار آورده شده است:
SELECT
CategoryName,
SubCategoryName,
SUM(SalesAmount) AS TotalSales,
AVG(SalesAmount) AS AverageSales,
COUNT(*) AS NumberOfSales
FROM Sales
GROUP BY ROLLUP(CategoryName, SubCategoryName);
این پرس و جوی اصلاح شده خروجی بیشتری را با میانگین و تعداد فروش برای هر سطح گروه بندی ارائه می دهد.
نتیجه گیری:
ROLLUP روشی مفید برای محاسبه مجموعهای تجمعی در سطوح مختلف سلسله مراتبی گروه بندی است. این به شما امکان می دهد تا به سرعت نمای کلی از توزیع داده ها در گروه های مختلف به دست آورید.



