Notice: Constant LEARNDASH_UPDATES_ENABLED already defined in /home/h246483/public_html/wp-content/plugins/sfwd-lms/nagatheme/naga-learndash-ic.php on line 0

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-schema-pro domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/h246483/public_html/wp-includes/functions.php on line 6121
SQL GROUPING SETS - هادی محمدیان
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 1000.00
Electronics NULL 500.00
Clothing NULL 300.00
Electronics 1 200.00
Electronics 2 300.00
Clothing 3 300.00

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

نکات:

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

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

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

5/5 ( 1 امتیاز )
نمایش بیشتر

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

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

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