Grouping Sets Fonksiyonu

Sql Server 2008 ve sonrasında gelen sürümlerde karşımıza çıkan Grouping sets fonksiyonu ile aynı veriler üzerinde birden fazla gruplama işlemi yapabiliriz. Eskiden group by ve union all ifadeleriyle yapılan bu işlem grouping sets ile daha kolay ve anlaşılır hale gelmiştir. Örneğimizde de görüleceği üzere ilk önce CustomerId' ye göre gruplanır. 2. etapta sırası ile ilk önce Yıla göre sonrasında ProductId'ye göre gruplama yapılır:

select CustomerID,ProductID,YEAR(OrderDate) as [Year],sum(Quantity) as [Quantities]
from Orders o inner join [Order Details] od on o.OrderID=od.OrderID
where CustomerID like 'A%'
group by GROUPING SETS(
(CustomerID,YEAR(OrderDate)),
(CustomerID,ProductID))
Order by CustomerID


Grouping sets içerisindeki parametrelere (CustomerID)' yi eklersek; yıla ve ProductID' ye göre grupladıktan sonra CustomerID için genel toplam verir. Parametrelere boş parantezi de eklersek ( ) , sorgu sonucundaki tüm alanları ( sum(Quantity) ) toplar, bütün ürünler için genel toplamı satır olarak gösterir.

select CustomerID,ProductID,YEAR(OrderDate) as [Year],sum(Quantity) as [Quantities]
from Orders o inner join [Order Details] od on o.OrderID=od.OrderID
where CustomerID like 'A%'
group by GROUPING SETS(
(CustomerID,YEAR(OrderDate)),
(CustomerID,ProductID),
(CustomerID),
()
Order by CustomerID


Yorumlar

Bu blogdaki popüler yayınlar

Natural Key ve Surrogate Key Nedir?

PL/SQL'de DEĞİŞKEN TANIMLAMA, EKRANA YAZI YAZDIRMA ve GÜNCELLEME

SQL Server Analysis Services 2012’de Multidimensional Model ve Tabular Model