Sorgulama ve aggregation
ROLLUP, CUBE ve GROUPING SETS
Detay, ara toplam ve genel toplam.
Kavramı anlayalım
GROUPING SETS aynı sorguda birden fazla gruplama seviyesi üretir. ROLLUP hiyerarşik ara toplamlar, CUBE bütün gruplama kombinasyonları için toplamlar oluşturur. Boyut sayısı arttıkça CUBE sonucu hızlı büyüyebilir; gerekli seviyeleri açıkça belirtmek daha okunabilirdir.
Toplam satırlarında kullanılan NULL ile verinin gerçek NULL değerini karıştırma. GROUPING(Column), sütunun toplam seviyesi nedeniyle dışarıda bırakılıp bırakılmadığını söyler. Rapor aracı bu bilgiyi kullanıp toplam satırını doğru etiketleyebilir.
Bir raporda kategori toplamı ve genel toplamı birlikte göstermek için.
COALESCE ile her NULL değeri “Toplam” etiketi yapmak.
Aynı konu. Üç farklı derinlik.
SELECT Category, COUNT(*) AS Products FROM lab.Product GROUP BY ROLLUP(Category);Kategori sayımlarına ek olarak yedi ürünün genel toplamını üretir.
Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.
Önce kendin dene.
Şehir bazındaki müşteri sayısını genel toplamla birlikte getir.
Çözümü ve açıklamasını göster
SELECT City, COUNT(*) AS Customers, GROUPING(City) AS IsTotal FROM lab.Customer GROUP BY ROLLUP(City);Genel toplam 6’dır; GROUPING gerçek veri NULL’larını toplam işaretinden ayırır.