🟡 LIKE, BETWEEN, IN
LIKE, BETWEEN, IN: Bu üç operatörü bir arşiv memurunun üç farklı arama refleksi gibi düşün. LIKE, dosya adının bir parçasını hatırlayan memurdur: 'adında Login geçen ne varsa get
Bu üç operatörü bir arşiv memurunun üç farklı arama refleksi gibi düşün. LIKE, dosya adının bir parçasını hatırlayan memurdur: 'adında Login geçen ne varsa getir'. BETWEEN, takvimden aralık işaretleyen memurdur: 'ocak ayının tamamı'. IN ise elinde hazır bir liste tutar: 'şu üç durumdan biri olan her şey'. Peki neden SQL bunlar için ayrı operatörler tanımlamış — hepsini OR ile yazmak zaten mümkünken? Çünkü `status='FAIL' OR status='SKIP' OR status='ERROR'` üç satırda okunabilir ama on beş değerde okunamaz hâle gelir; üstelik birini yanlışlıkla `AND` yazdığında sorgu **sessizce sıfır satır** döner, hata vermez. IN, o hatayı yapmanı imkânsız kılar. Aynı şekilde BETWEEN, `>= AND = lo && d <= hi` aralık kontrolü, IN ≈ `List.of(...).contains(status)`. Fark şu ki Java'da bu kontrolü veriyi belleğe **çektikten sonra** yaparsın; SQL'de ise veritabanının içinde, index kullanılarak yapılır — 2 milyon satırlık test geçmişinde bu fark saniyeler değil dakikalardır. QA bağlamında bu üçlü günlük ekmektir: 'son sprint'te adında Checkout geçen ve FAIL/ERROR durumundaki koşumlar' sorusu, bir bug raporunu 'ara sıra kırılıyor' iddiasından çıkarıp 'şu tarih aralığında 12 kez kırıldı' kanıtına dönüştürür.
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?
Bug Takip DB — İnteraktif Örnek
Bug Tracking DB — Interactive Example