
Sql’de Cube ve Rollup Kullanımı
Cube ve rollup ifadelerini Group by ile grupladığımız bir veri kümesinin ara toplamlarını bulmak için kullanırız.Sql’de raporlama yaparken sonucu ara toplam olarak döndürür.CUBE Group by ile belirtilen sütunların tüm kombinasyonları için ara toplamları gösterir.ROLLUP ifadesi ise bir hiyerarşi şeklinde kombinasyon yapar ve ara toplamı gösterir.Aşağıdaki sorguda Cube ifadesi kullanıldı.
1
2
3
4
5
6
|
SELECT YEAR(Sales.SalesOrderHeader.ModifiedDate) YIl,Sales.SalesOrderHeader.SalesPersonID,
SUM(Sales.SalesOrderDetail.UnitPrice) PARA
FROM Sales.SalesOrderHeader
INNER JOIN Sales.SalesOrderDetail
ON Sales.SalesOrderHeader.SalesOrderID = Sales.SalesOrderDetail.SalesOrderDetailID
GROUP BY CUBE(YEAR(Sales.SalesOrderHeader.ModifiedDate),Sales.SalesOrderHeader.SalesPersonID)
|
Sorgu çalıştırıldığında aşağıdaki tablo listelenir.
Yukarıdaki ekranda tüm kombinasyonlar denenmiştir.Bundan dolayı 85 satırlık bir sonuç döndürdü.
Şimdi rollup ifadesi ile yazılan sorguyu çalıştıralım.
1
2
3
4
5
6
|
SELECT YEAR(Sales.SalesOrderHeader.ModifiedDate) YIl,Sales.SalesOrderHeader.SalesPersonID,
SUM(Sales.SalesOrderDetail.UnitPrice) PARA
FROM Sales.SalesOrderHeader
INNER JOIN Sales.SalesOrderDetail
ON Sales.SalesOrderHeader.SalesOrderID = Sales.SalesOrderDetail.SalesOrderDetailID
GROUP BY ROLLUP(YEAR(Sales.SalesOrderHeader.ModifiedDate),Sales.SalesOrderHeader.SalesPersonID)
|
Yukarıdaki sorguda her yıl kendi arasında olacak biçimde gruba ayrıldı. 2005 den sonra 2006 şeklinde belli bir hiyerarşi ile sıralandı ve 67 satırlık bir sonuç döndürdü.
Leave a reply