Ana içeriğe geç
Kesit SQL
Orta · Yapay Zekâ ile SQL

Yapay zekânın yazdığı SQL'i doğrulamak: hata avı

Sık yapılan YZ hatalarını tanı ve düzelt; doğrulama kontrol listesi.

Uygulamada aç, 5 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Çalışan sorgu ≠ doğru sorgu

Yapay zekânın ürettiği sorgular genellikle hatasız çalışır ama yanlış sonuç verebilir. En tehlikeli hatalar sessiz olanlardır: sayı makul görünür, kimse fark etmez. Bu derste tipik hataları ve her sorgu için uygulanacak kontrol listesini görüyoruz.

Sekiz maddelik kontrol listesi

  1. Sütunlar gerçekten var mı? Model, olmayan bir sütun uydurabilir (orders.total_amount gibi).
  2. JOIN satırları çoğaltıyor mu? Sipariş tablosunu satır tablosuyla birleştirip sipariş sayarken COUNT(DISTINCT ...) gerekir.
  3. Filtre doğru yerde mi? LEFT JOIN'den sonra sağ tabloya WHERE yazmak onu INNER JOIN'e çevirir.
  4. Tarih aralığı kapalı mı? BETWEEN '2024-01-01' AND '2024-12-31', saatli sütunlarda son günü kaçırır; < '2025-01-01' güvenlidir.
  5. Tam sayı bölmesi var mı? Oranlarda 100.0 * unutulmuş olabilir.
  6. NULL'lar hesaba katıldı mı? COUNT(sutun), NULL'ları saymaz; NOT IN listesinde NULL varsa hiç satır dönmez.
  7. İş kuralı uygulandı mı? İptal ve iadeler dışlandı mı? İndirim düşüldü mü?
  8. Sağlama yaptın mı? Toplamı bilinen bir rakamla karşılaştır; alt kırılımların toplamı genel toplama eşit mi?

Örnek: sessiz çoğalma

Soru: “Kanal bazında sipariş sayısı.” Yapay zekâ şunu yazdı:

-- YZ'nin sorgusu: order_items ile birleştiği için her sipariş satır sayısı kadar sayılır
SELECT o.channel, COUNT(*) AS siparis
FROM orders o
JOIN order_items oi ON oi.order_id = o.order_id
GROUP BY o.channel;
-- Doğrusu
SELECT channel, COUNT(*) AS siparis
FROM orders
GROUP BY channel;
Yapay zekâdan doğrulama iste“Bu sorgunun sonucunu doğrulamak için hangi kontrol sorgularını çalıştırmalıyım?” diye sormak, modelin kendi hatalarını yakalamasını kolaylaştırır. Yine de son kontrol sende.
Alıştırmalara geç (5)