SQL

SQL GROUPING SETS

GROUPING SETS در SQL  به شما این امکان را می‌دهد تا نتایج یک پرس و جو را در گروه‌های مختلف بر اساس ستون‌های خاص گروه بندی کنید. این می‌تواند برای دستیابی به سطوح مختلف جمع در یک پرس و جو مفید باشد.

در اینجا یک مثال جامع از استفاده از GROUPING SETS در SQL  آورده شده است:

فرض کنید جدولی به نام Sales با ستون‌های ProductID، CategoryName، SalesPersonID و SalesAmount دارید. می‌خواهید مجموع فروش را برای هر ترکیبی از CategoryName و SalesPersonID، و همچنین مجموع کل فروش برای هر CategoryName و کل فروش کلی را مشاهده کنید.

پرس و جوی SQL با GROUPING SETS:

SQL

SELECT
  GROUPING_SETS(CategoryName, SalesPersonID),
  CategoryName,
  SalesPersonID,
  SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY GROUPING SETS (CategoryName, CategoryName, SalesPersonID);

توضیح:

  • این پرس و جو از GROUPING SETS برای تعریف سه سطح گروه بندی استفاده می‌کند:
    • CategoryName: این سطح فقط بر اساس CategoryName گروه بندی می‌کند.
    • CategoryName, SalesPersonID: این سطح بر اساس هر دو CategoryName و SalesPersonID گروه بندی می‌کند.
    • (): گروه بندی خالی نشان دهنده جمع کل برای کل جدول است.
  • GROUP BY GROUPING SETS (CategoryName, CategoryName, SalesPersonID) : این قسمت به SQL  می‌گوید که از تعاریف گروه بندی مشخص شده در GROUPING SETS استفاده کند.
  • سایر قسمت‌های پرس و جو مانند SELECT و SUM مشابه سایر پرس و جوهای گروه بندی با GROUP BY هستند.

نتیجه:

این پرس و جو خروجی زیر را برمی‌گرداند:

CategoryName SalesPersonID TotalSales
Total NULL ۱۰۰۰.۰۰
Electronics NULL ۵۰۰.۰۰
Clothing NULL ۳۰۰.۰۰
Electronics ۱ ۲۰۰.۰۰
Electronics ۲ ۳۰۰.۰۰
Clothing ۳ ۳۰۰.۰۰

همانطور که مشاهده می‌کنید، خروجی شامل مجموع فروش برای هر سطح گروه بندی است. ردیف اول با CategoryName برابر با “Total” و SalesPersonID برابر با NULL، کل فروش را نشان می‌دهد. ردیف‌های بعدی مجموع فروش را برای هر CategoryName و هر ترکیبی از CategoryName و SalesPersonID نشان می‌دهند.

نکات:

  • می‌توانید از چندین سطح گروه بندی در GROUPING SETS استفاده کنید.
  • می‌توانید از توابع تجمعی دیگری مانند AVG، MIN و MAX به جای SUM استفاده کنید.
  • می‌توانید از نام مستعار برای ستون‌های گروه بندی شده در clause SELECT استفاده کنید.

مزایای استفاده از GROUPING SETS:

  • خوانایی بیشتر کد نسبت به استفاده از UNION ALL برای دستیابی به همان نتیجه.
  • کارایی بهتر نسبت به استفاده از UNION ALL در برخی موارد.

۵/۵ ( ۱ امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا