فرض کنید جدولی به نام 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 | ۱۰۰۰.۰۰ |
Electronics | NULL | ۶۰۰.۰۰ |
Laptops | ۴۰۰.۰۰ | |
Desktops | ۲۰۰.۰۰ | |
Clothing | NULL | ۴۰۰.۰۰ |
Shirts | ۲۰۰.۰۰ | |
Pants | ۲۰۰.۰۰ |
توضیح:
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
روشی مفید برای محاسبه مجموعهای تجمعی در سطوح مختلف سلسله مراتبی گروه بندی است. این به شما امکان می دهد تا به سرعت نمای کلی از توزیع داده ها در گروه های مختلف به دست آورید.