Yaygın Tuzaklar: Toplamalarda NULL Değerleri
Klasik NULL tuzaklarından kaçının: AVG'nin NULL değerlerini yok sayması, COUNT(sütun)'un NULL değerlerini atlaması ve NULL kabul eden sütunlara göre gruplamadaki şaşırtıcı sonuçlar.
Yaygın Tuzaklar: Toplamalarda NULL Değerleri, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Toplulaştırmalar NULL Değerlerini Atlar
COUNT(*) dışındaki her toplulaştırma, NULL girdilerini yok sayar. Bazen istediğiniz tam olarak budur — bazen de bir hatadır.
Klasik Tuzak: COUNT(*) ve COUNT(col)
Sütunda NULL değerleri olduğunda sonuçlar farklıdır:
SELECT COUNT(*) FROM users; -- 1000
SELECT COUNT(email) FROM users; -- 950 (50 users have NULL email)Hata: AVG, NULL Değerini Sıfır Olarak Saymaz
Puanlar [5, 5, NULL] → AVG = 5; (5+5+0)/3 = 3,33 değildir. Bunun istediğiniz şey olup olmadığına karar verin.
SELECT AVG(rating) FROM reviews; -- 5
SELECT AVG(COALESCE(rating, 0)) FROM reviews; -- 3.33Boş Tablo = NULL Toplulaştırma Sonucu
Hiçbir satır eşleşmezse SUM/AVG/MIN/MAX, 0 yerine NULL döndürür. Bunu COALESCE ile ele alın:
SELECT COALESCE(SUM(total), 0) AS revenue
FROM orders
WHERE user_id = 999999; -- safe even when user has no ordersNULL Sütununun SUM Sonucu
Her satırın değeri NULL ise SUM, 0 yerine NULL döndürür — aynı tuzak burada da geçerlidir.
NULL Gruplama Anahtarıyla GROUP BY
NULL kendi grubunu oluşturur:
SELECT country, COUNT(*) FROM users
GROUP BY country;
-- → ('US', 100), ('CA', 30), (NULL, 5)NULL Değerlerle Farklı Değerleri Sayma
COUNT(DISTINCT col), NULL değerlerini yok sayar:
INSERT INTO t (c) VALUES (1),(2),(NULL),(NULL),(2);
SELECT COUNT(DISTINCT c) FROM t; -- 2 (NULL not counted)Çok Sütunlu DISTINCT
NULL içeren bir demet, NULL olmayan sütunları aynı olan başka bir demetten yine de farklıdır:
SELECT COUNT(*) FROM (
SELECT DISTINCT a, b FROM t
) sub;İsteğe Bağlı Tablolara Örtük JOIN Kullanımına Dikkat Edin
Bir LEFT JOIN, toplulaştırmanızı değiştiren NULL değerleri ortaya çıkarabilir. Bu satırları sayıp saymayacağınıza veya süzüp süzmeyeceğinize karar verin:
SELECT u.id, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id; -- COUNT(o.id) gives 0 for users with no ordersKoşullu Sayımlar için FILTER
FILTER, okunabilirlik açısından CASE'i SUM içine yerleştirmekten daha iyidir:
SELECT COUNT(*) FILTER (WHERE status = 'paid') AS paid_count,
COUNT(*) FILTER (WHERE status = 'refunded') AS refund_count
FROM orders;Toplulaştırmaları NULL Değerlerle Her Zaman Sınayın
Yeni bir toplulaştırma sorgusu eklediğinizde, sorguyu NULL değerleri içeren bir örnek üzerinde çalıştırın. Hata, temiz sınama verilerinde neredeyse hiçbir zaman ortaya çıkmaz.
Özet
NULL + toplulaştırma, en yaygın SQL hatasıdır.
- Toplulaştırmalar NULL değerlerini atlar (COUNT(*) dışında)
- Boş sonuç → NULL, 0 değil
- 0 istendiğinde COALESCE ile sarın
- LEFT JOIN toplulaştırmalarını dikkatle inceleyin
Hızlı Kontrol
Reviews tablosunda puanlar [5, 5, NULL, 1]. AVG(rating) ne döndürür?
Sıkça Sorulan Sorular
“Yaygın Tuzaklar: Toplamalarda NULL Değerleri” dersi ücretsiz mi?
Evet — “Yaygın Tuzaklar: Toplamalarda NULL Değerleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Yaygın Tuzaklar: Toplamalarda NULL Değerleri” dersinde ne öğreneceğim?
Klasik NULL tuzaklarından kaçının: AVG'nin NULL değerlerini yok sayması, COUNT(sütun)'un NULL değerlerini atlaması ve NULL kabul eden sütunlara göre gruplamadaki şaşırtıcı sonuçlar. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Yaygın Tuzaklar: Toplamalarda NULL Değerleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- COUNT, SUM, AVG, MIN, MAX
- Tek ve Birden Çok Sütunla GROUP BY
- HAVING ve WHERE Karşılaştırması
- Yaygın Tuzaklar: Toplamalarda NULL Değerleri