COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
17/ 65

Sorgulama ve aggregation

GROUP BY ve HAVING

Satır filtresi, grup filtresi ve sonuç grain’i.

AnlaÖrneği inceleKendin uygula

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.

NERESİNDE KULLANIRSIN?

Müşteri, şehir, kategori veya dönem seviyesinde raporlar için.

SIK YAPILAN HATA

SUM koşulunu WHERE’e yazmak ya da rapora uysun diye rastgele GROUP BY sütunları eklemek.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
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.

02 / SIRA SENDE

Önce kendin dene.

En az iki müşterisi olan şehirleri getir.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT City, COUNT(*) AS Customers FROM lab.Customer GROUP BY City HAVING COUNT(*) >= 2;

Yalnız Istanbul, müşteri sayısı 3.