0Pricing
Coding Interview Prep · Ders

NULL Değerlerle SUM ve AVG

AVG'nin NULL değerleri neden yok saydığını ve bunun mülakatçıların beklediği yanıtı nasıl değiştirdiğini öğrenin.

NULL Değerlerle SUM ve AVG, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 2. 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, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

AVG İşleminin Gizlediği Tuzak

Özensiz adayları zor durumda bırakan klasik bir mülakat sorusu şöyledir: "Bazı NULL değerler içeren bir maaş sütununuz var. AVG(salary) neyi hesaplar ve bu, işletmenin istediği şey midir?"

Dürüst yanıt, toplama işlevlerinin NULL değerlerini yok saydığını ve bunun ortalamanın paydasını değiştirdiğini anlayıp anlamadığınızı ortaya çıkarır. Bunu üretimde yanlış yaparsanız raporlanan ortalamanız sessizce olduğundan yüksek çıkar.

Davranışı tamamen açık hâle getirelim.

Örnek Veriler

Ders boyunca NULL alabilen bir bonus sütununa sahip şu employees tablosunu kullanınız:

  • Alice, prim 100
  • Bob, prim 200
  • Carol, prim NULL
  • Dan, prim 300

Dört satır, üç NULL olmayan prim ve bir NULL vardır. SUM ve AVG işlemlerini bunlar üzerinde çalıştırıp NULL değerinin nasıl ele alındığını göreceğiz.

SUM NULL Değerlerini Yok Sayar

SUM(bonus), yalnızca NULL olmayan değerleri toplar: 100 + 200 + 300 = 600. NULL içeren satır hiçbir katkı yapmaz; basitçe atlanır, aritmetik anlamda sayıyı değiştirecek şekilde sıfır olarak ele alınmaz.

Pratikteki etkisi, NULL değerini yok kabul etmekle aynıdır. SUM, NULL değerleri nedeniyle hiçbir zaman hata vermez ve tüm girişler NULL olmadıkça NULL döndürmez.

SELECT SUM(bonus) AS total_bonus
FROM employees;
-- returns 600

AVG de NULL Değerlerini Yok Sayar

AVG(bonus) kritik olan işlemdir. NULL olmayan değerlerin toplamını NULL olmayan değerlerin sayısına böler: 600 / 3 = 200.

Payda 4 değil, 3'tür. NULL içeren satır hem paydan hem paydadan çıkarılır. AVG'nin insanları şaşırtabilmesinin nedeni tam olarak budur: Ortalama tüm satırlar üzerinden değil, mevcut değerler üzerinden alınır.

SELECT AVG(bonus) AS avg_bonus
FROM employees;
-- 600 / 3 = 200, NOT 600 / 4 = 150

Payda Neden Önemlidir

İşletme açısından NULL primin anlamının "prim alınmadı" = 0 olduğunu varsayınız. Bu durumda gerçek ortalama 600 / 4 = 150 olmalıdır; ancak AVG(bonus) 200 bildirir.

Mülakatta verilecek doğru yanıt şöyledir: "AVG NULL değerlerini yok sayar; bu nedenle primi bulunan çalışanlar üzerinden ortalama alır. NULL sıfır anlamına geliyorsa önce NULL değerlerini 0'a dönüştürmeliyim." Bu farkı belirtmek puan kazandırır.

COALESCE ile NULL Değerlerini Sıfıra Dönüştürme

Tüm satırların ortalamasını alırken NULL değerini 0 kabul etmek için sütunu COALESCE(bonus, 0) içine sarınız. Artık her satırda sayısal bir değer bulunduğundan payda 4 olur.

Sonuç 600 / 4 = 150 olur. Dersin çıkarımı şudur: AVG(col) ve AVG(COALESCE(col, 0)) farklı iş sorularına yanıt verir. Seçiminizi bilinçli yapınız.

SELECT AVG(COALESCE(bonus, 0)) AS avg_over_all
FROM employees;
-- 600 / 4 = 150

AVG = SUM / COUNT, Dikkatle

Yararlı bir özdeşlik şöyledir: AVG(col), SUM(col) / COUNT(col) ifadesine eşittir — COUNT(*) değil, COUNT(col) olduğuna dikkat ediniz; çünkü hem AVG hem de bu COUNT NULL değerlerini atlar.

Yanlışlıkla SUM(col) / COUNT(*) yazarsanız tüm satırlar üzerinden ortalamayı elde edersiniz (burada 150); bu, AVG'den (200) farklıdır. Mülakatçılar bazen, doğru COUNT biçimini seçip seçmediğinizi görmek için AVG'yi elle yeniden oluşturmanızı ister.

SELECT
  AVG(bonus)                       AS builtin_avg,   -- 200
  SUM(bonus) * 1.0 / COUNT(bonus)  AS manual_avg,    -- 200
  SUM(bonus) * 1.0 / COUNT(*)      AS over_all_rows  -- 150
FROM employees;

Tamsayı Bölmesi Tuzağı

Ortalamaları elle hesaplarken ortaya çıkabilecek ince bir hata şudur: birçok veritabanında iki tamsayıyı bölmek tamsayı bölmesi yapar ve ondalık basamakları keser. 7 / 2 işlemi 3, 3.5 değil, sonucunu verebilir.

AVG genellikle ondalık bir değer döndürür; ancak bunu tamsayı sütunlarda SUM / COUNT kullanarak yeniden oluşturursanız kesinlik kaybedebilirsiniz. Önce 1.0 ile çarpınız veya ondalık bir türe dönüştürünüz.

SELECT
  SUM(bonus) / COUNT(bonus)        AS maybe_truncated,
  SUM(bonus) * 1.0 / COUNT(bonus)  AS precise
FROM employees;

Her Şey NULL Olduğunda

Mülakatçıların sevdiği uç durum şudur: her değer NULL ise veya filtre hiçbir satırla eşleşmiyorsa ne olur?

  • NULL olmayan giriş bulunmadığında SUM NULL döndürür (0 değil).
  • Sıfır sayıya bölme tanımsız olduğundan AVG de NULL döndürür.
  • Buna karşılık COUNT 0 döndürür.

Sayısal bir varsayılan değere ihtiyacınız varsa sonucu COALESCE(SUM(col), 0) içine sarınız.

SELECT COALESCE(SUM(bonus), 0) AS safe_total
FROM employees
WHERE 1 = 0;  -- no rows: returns 0, not NULL

Grup Başına Ortalamalar

Aynı NULL kuralları GROUP BY içinde de geçerlidir. Her grubun AVG işlemi, o gruptaki NULL olmayan değerlerin sayısına böler. Tamamı NULL primlerden oluşan bir grup, o grup için AVG = NULL sonucunu verir.

Bu nedenle departman bazında şaşırtıcı ortalamalar gördüğünüzde, birleştirme hatasından önce NULL değerlerinin her grubun paydasını küçültmesinden şüpheleniniz.

SELECT department, AVG(bonus) AS avg_bonus
FROM employees
GROUP BY department;

Yanıtı Nasıl İfade Etmeli

Derli toplu bir mülakat yanıtı şöyle olur: "SUM ve AVG, NULL değerlerini yok sayar. AVG, NULL olmayan değerlerin sayısına böldüğünden NULL değerleri fiilen paydayı küçültür. NULL sıfır sayılmalıysa toplama işleminden önce COALESCE ile dönüştürürüm; aksi hâlde ortalama yalnızca değeri bulunan satırları yansıtır."

Bu tek cümle doğruluğu, iş farkındalığını ve çözümü gösterir.

Hızlı Kontrol

Kuralı örnek verilere uygulayınız.

Özet

NULL değerleri içeren SUM ve AVG için temel çıkarımlar:

  • Her ikisi de NULL değerlerini tamamen yok sayar.
  • AVG(col) = SUM(col) / COUNT(col) — payda NULL değerlerini içermez.
  • NULL sıfır anlamına geldiğinde ve hesaba katılması gerektiğinde COALESCE(col, 0) kullanınız.
  • Tamamı NULL olan veya hiç satır içermeyen girdilerde SUM ve AVG NULL döndürür (COUNT 0 döndürür).
  • AVG'yi elle yeniden oluştururken tamsayı bölmesine dikkat ediniz.

Sırada: MIN, MAX ve sayısal olmayan verilerin toplulaştırılması.

Sıkça Sorulan Sorular

“NULL Değerlerle SUM ve AVG” dersi ücretsiz mi?

Evet — “NULL Değerlerle SUM ve AVG” 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 Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“NULL Değerlerle SUM ve AVG” dersinde ne öğreneceğim?

AVG'nin NULL değerleri neden yok saydığını ve bunun mülakatçıların beklediği yanıtı nasıl değiştirdiğini öğrenin. Coding Interview Prep 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.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, 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 2. dersidir.

“NULL Değerlerle SUM ve AVG” 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 Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep 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

  1. COUNT(*) ile COUNT(sütun) ve COUNT(DISTINCT) Karşılaştırması
  2. NULL Değerlerle SUM ve AVG
  3. MIN, MAX ve Sayısal Olmayan Toplulaştırma
  4. GROUP BY Olmadan Toplulaştırma
← Coding Interview Prep Sayfasına Dön