Sorgulama ve aggregation
GROUP BY ve HAVING
Satır filtresi, grup filtresi ve sonuç grain’i.
Kavramı anlayalım
GROUP BY seçilen anahtar kombinasyonuna göre satırları gruplar. Sonuçta bir satırın neyi temsil ettiği artık grup anahtarlarıyla belirlenir. SELECT’teki gruplama dışı alanlar aggregate içinde olmalıdır. Fazladan grup sütunu eklemek sonuç grain’ini istemeden değiştirebilir.
WHERE gruplamadan önce satırları azaltır; HAVING oluşturulmuş grupları aggregate koşuluyla süzer. “Ödenmiş siparişler arasından en az iki siparişi olan müşteriler” için ödeme durumu WHERE, sipariş sayısı HAVING koşuludur.
NULL grup anahtarları tek grupta toplanır. COUNT(*) ile COUNT(Email) farkını gruplarda da koru. Gruplamadan önce hangi satırların rapora dahil olduğunu ve sonuç satırının neyi temsil ettiğini bir cümleyle yaz.
Müşteri, şehir, kategori veya dönem seviyesinde raporlar için.
SUM koşulunu WHERE’e yazmak ya da rapora uysun diye rastgele GROUP BY sütunları eklemek.
Aynı konu. Üç farklı derinlik.
SELECT City, COUNT(*) AS Customers FROM lab.Customer GROUP BY City;Istanbul 3, diğer şehirler 1 müşteri içerir.
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.
En az iki müşterisi olan şehirleri getir.
Çözümü ve açıklamasını göster
SELECT City, COUNT(*) AS Customers FROM lab.Customer GROUP BY City HAVING COUNT(*) >= 2;Yalnız Istanbul, müşteri sayısı 3.