🟡 GROUP BY & HAVING

GROUP BY & HAVING: GROUP BY, büyük bir çamaşırhaneyi düşün: yüzlerce gömlek farklı sahiplerinden gelmiş, sen önce her müşterinin gömleklerini kendi yığınına koyuyorsun (GROUP BY

GROUP BY, büyük bir çamaşırhaneyi düşün: yüzlerce gömlek farklı sahiplerinden gelmiş, sen önce her müşterinin gömleklerini kendi yığınına koyuyorsun (GROUP BY customer_id), sonra her yığını sayıyorsun (COUNT), ardından 5'ten fazla gömlekli müşterileri öne alıyorsun (HAVING COUNT > 5). WHERE bu sürecin neresine giriyor? HAVING'den önce — yırtık olanları gelmeden önce zaten çıkarıyorsun (WHERE condition). Java'da `list.stream().collect(Collectors.groupingBy(t -> t.environment, Collectors.counting()))` yazıp sonucu ayrıca filtrelersin; SQL'de GROUP BY + HAVING tek sorguda ikisini birden yapar. Fark kritiktir: WHERE gruplama yapılmadan önce çalışır ve aggregate sonuçlara erişemez; HAVING ise gruplandıktan sonra çalışır ve COUNT/SUM/AVG üzerinde filtre kurar. QA mühendisi için bu sırayı yanlış anlamak 'HAVING yerine WHERE kullandım, sıfır sonuç döndü' hatasına yol açar — ve sorgu herhangi bir hata mesajı vermeden yanlış sıfır sonuç döndürdüğünde, sessiz yanlış PASS riski en yüksek noktasına ulaşır.

GROUP BY, aynı değere sahip satırları gruplar. HAVING ise bu grupları filtreler — WHERE gibi ama aggregate sonuçları için. COUNT/SUM gibi fonksiyonları WHERE içinde kullanamazsınız; bunun için HAVING kullanın.

Micro Lab: SQL — GROUP BY / CTE / Window

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

Adim Adim: SQL — GROUP BY / CTE / Window

Aggregation mi Window mi?

Aggregation (ozetleme) mi Window (satir bazli hesap) mi? Onu belirle

Aggregation icin GROUP BY ile ozetlenecek sutunu sec

HAVING ile gruplara kosul uygula — WHERE gibi ama agregasyon sonrasinda

WITH cte_adi AS (...) SELECT ... FROM cte_adi ile sorguyu modülerlestir

OVER(PARTITION BY) ekle

Window icin SUM(col) OVER (PARTITION BY bolum ORDER BY siralama) kullan

SQL GROUP BY ve Window Function sorgusu yazma sirasi nedir?

Veri Gruplama ve HAVING Filtresi