خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
تابع CUBE در SQL Server
تابع CUBE برای محاسبه زیر مجموعه ها و جمع کل برای همه ترکیبات ستون های گروه بندی مشخص شده در GROUP BY مورد استفاده قرار می گیرد. تابع CUBE بسیار شبیه به ROLLUP می باشد و است که محاسبه زیرمجموعه ها و جمع کل ها برای مجموعه ای از ستون ها را انجام میدهد. CUBE از عملکردی یکسان مانند ROLLUP استفاده می کند اما جمع زیر مجموعه ها و جمع کل را برای کلیه ستون های گروه بندی و مشخص شده در GROUP BY را بازمی گرداند.
Syntax استفاده از آن به فرم زیر می باشد:
در ادامه به مثالی از CUBE خواهیم پرداخت. برای مثال جدولی به نام ProdCatLink را درنظر بگیرید که رکوردهای را در شکل زیر مشاهده می کنید.
فرض کنید ، اگر مجبور شویم مقدار کل را نیز نمایش دهیم ، از کوئری زیر استفاده می کنیم.
حالا بخواهیم جمع کل vendor ها را در کوئری نشان دهیم، از تابع CUBE در GROUP BY استفاده می کنیم.
همانطور که مشاهده کردید، تابع CUBE، جمع کل را برای vendor ها در ردیف Null قرار داد و ما با تغییر Null به Total نام این ردیف را مناسب تر می کنیم:
به منظور نمایش فروش کل vendor ها و category کالاها، از کوئری زیر استفاده می کنیم:
در این مثال نیازی به استفاده از CUBE نبوده است ولی در صورت مسئله بعدی بدان نیاز خواهیم داشت.
برای نمایش جمع کل زیر مجموعه vendor ها و category کالا، از CUBE به فرم زیر استفاده می کنیم:
در Result set فوق، در ردیف اول، جمع کل را مشاهده می کنید. در ستون دوم و دوم جمع کل vendor ها بر اساس category را مشاهده می کنید.
ستون 4 و 7 و 10، جمع کل بر اساس vendor را نشان می دهد.
ستون 6 و 6 8 و 9 و 11 و 12، جمع کل بر اساس vendor و category را نشان میدهد.
در آخر فقط به این نکته توجه داشته باشید که فیلدهایی که در Select قید می کنید، در CUBE هم باید وارد شوند در غیر اینصورت خطا دریافت خواهید کرد. به مثال زیر دقت کنید. به دلیل قید نکردن فیلد category، خطا نمایش داده شد:
Syntax استفاده از آن به فرم زیر می باشد:
SELECT
col1 , col2 , AggregateFunction(col3)
FROM
tablename
GROUP BY CUBE( col1 , col2);
در ادامه به مثالی از CUBE خواهیم پرداخت. برای مثال جدولی به نام ProdCatLink را درنظر بگیرید که رکوردهای را در شکل زیر مشاهده می کنید.
فرض کنید ، اگر مجبور شویم مقدار کل را نیز نمایش دهیم ، از کوئری زیر استفاده می کنیم.
SELECT Vendor, SUM (Quantity) AS TotalQty FROM ProdCatLink
GROUP BY Vendor
حالا بخواهیم جمع کل vendor ها را در کوئری نشان دهیم، از تابع CUBE در GROUP BY استفاده می کنیم.
SELECT Vendor, SUM (Quantity) AS TotalQty FROM ProdCatLink
GROUP BY CUBE(vendor)
همانطور که مشاهده کردید، تابع CUBE، جمع کل را برای vendor ها در ردیف Null قرار داد و ما با تغییر Null به Total نام این ردیف را مناسب تر می کنیم:
SELECT COALESCE(Vendor,'TOTAL') as vendor , SUM (Quantity) AS TotalQty
FROM ProdCatLink
GROUP BY CUBE(vendor)
به منظور نمایش فروش کل vendor ها و category کالاها، از کوئری زیر استفاده می کنیم:
SELECT Vendor, Category, SUM (Quantity) AS TotalQty FROM ProdCatLink
GROUP BY Vendor, Category
در این مثال نیازی به استفاده از CUBE نبوده است ولی در صورت مسئله بعدی بدان نیاز خواهیم داشت.
برای نمایش جمع کل زیر مجموعه vendor ها و category کالا، از CUBE به فرم زیر استفاده می کنیم:
SELECT Vendor, Category, SUM (Quantity) AS TotalQty FROM ProdCatLink
GROUP BY CUBE(Vendor, Category) ORDER BY vendor, category
در Result set فوق، در ردیف اول، جمع کل را مشاهده می کنید. در ستون دوم و دوم جمع کل vendor ها بر اساس category را مشاهده می کنید.
ستون 4 و 7 و 10، جمع کل بر اساس vendor را نشان می دهد.
ستون 6 و 6 8 و 9 و 11 و 12، جمع کل بر اساس vendor و category را نشان میدهد.
در آخر فقط به این نکته توجه داشته باشید که فیلدهایی که در Select قید می کنید، در CUBE هم باید وارد شوند در غیر اینصورت خطا دریافت خواهید کرد. به مثال زیر دقت کنید. به دلیل قید نکردن فیلد category، خطا نمایش داده شد:
SELECT Vendor, Category, SUM (Quantity) AS TotalQty FROM ProdCatLink
GROUP BY CUBE(Vendor) ORDER BY vendor, category
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: