0Pricing
SQL Academy · Ders

CASE İfadeleri ve Özet Tablo Sorguları

Uzun tabloları geniş çapraz tablo raporlarına dönüştürmek için toplamaların içinde CASE WHEN kullanın.

CASE İfadeleri ve Özet Tablo Sorguları, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. 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.

CASE: SQL'de Satır İçi Koşul Yapısı

CASE, SQL'deki üçlü koşul yapısıdır. İki biçimi vardır:

-- Searched CASE
CASE WHEN x > 0 THEN 'positive'
     WHEN x < 0 THEN 'negative'
     ELSE 'zero' END

-- Simple CASE
CASE status
  WHEN 'A' THEN 'active'
  WHEN 'P' THEN 'pending'
  ELSE 'unknown'
END

SELECT İçinde CASE

Türetilmiş bir sütun hesaplayın:

SELECT id, total,
       CASE
         WHEN total >= 1000 THEN 'whale'
         WHEN total >=  100 THEN 'regular'
         ELSE 'small'
       END AS bucket
FROM orders;

WHERE ve ORDER BY İçinde CASE

Özel filtreleme ve sıralama:

-- Custom sort:
ORDER BY
  CASE WHEN status = 'urgent' THEN 0 ELSE 1 END,
  created_at DESC;

-- Conditional filter:
WHERE CASE WHEN $1 = 'paid' THEN status = 'paid'
           ELSE status IN ('pending','paid')
      END;

Toplama İşlevlerinde CASE: Koşullu Sayımlar

Klasik pivotlama yöntemi:

SELECT user_id,
       COUNT(*) AS total,
       SUM(CASE WHEN status = 'paid'      THEN 1 ELSE 0 END) AS paid,
       SUM(CASE WHEN status = 'pending'   THEN 1 ELSE 0 END) AS pending,
       SUM(CASE WHEN status = 'cancelled' THEN 1 ELSE 0 END) AS cancelled
FROM orders
GROUP BY user_id;

FILTER: Daha Temiz Bir Alternatif

PostgreSQL'in FILTER yan tümcesi daha okunaklıdır:

SELECT user_id,
       COUNT(*)                                     AS total,
       COUNT(*) FILTER (WHERE status = 'paid')      AS paid,
       COUNT(*) FILTER (WHERE status = 'pending')   AS pending,
       COUNT(*) FILTER (WHERE status = 'cancelled') AS cancelled
FROM orders
GROUP BY user_id;

Ayları Sütunlara Dönüştürme

Uzun biçimi CASE + toplama işleviyle geniş biçime dönüştürün:

SELECT year,
       SUM(CASE WHEN month =  1 THEN revenue END) AS jan,
       SUM(CASE WHEN month =  2 THEN revenue END) AS feb,
       -- ...
       SUM(CASE WHEN month = 12 THEN revenue END) AS dec
FROM monthly_revenue
GROUP BY year
ORDER BY year;

Kategorileri Pivotlama

Her kullanıcı için bir satır, her durum için bir sütun:

SELECT user_id,
       SUM(total) FILTER (WHERE status = 'paid')      AS paid_total,
       SUM(total) FILTER (WHERE status = 'pending')   AS pending_total
FROM orders GROUP BY user_id;

CASE Pivotlarının Sınırlamaları

Hedef sütunları yazma sırasında bilmeniz gerekir. Dinamik pivotlamalar için SQL'i uygulamada üretin veya yordamlı PL/pgSQL kullanın.

CASE ve COALESCE / NULLIF

COALESCE = "ilk NULL olmayan". NULLIF = "eşitse NULL". CASE daha geneldir — COALESCE/NULLIF uygun olmadığında kullanın.

Tür Uyumluluğu

Tüm CASE dalları uyumlu türler üretmelidir. Türleri karıştırıyorsanız açıkça dönüştürün:

SELECT CASE WHEN x THEN 1::TEXT ELSE 'no' END;

İç İçe CASE

Çok düzeyli dallanma:

SELECT CASE
  WHEN amount IS NULL THEN 'no payment'
  WHEN amount = 0     THEN 'free'
  WHEN amount < 10    THEN 'cheap'
  ELSE
    CASE WHEN paid_at IS NULL THEN 'overdue' ELSE 'paid' END
END AS status FROM invoices;

Özet

CASE, SQL'deki evrensel "if/else" yapısıdır.

  • SELECT ile hesaplanan sütunlar
  • CASE-toplama veya FILTER aracılığıyla pivotlamalar
  • Özel WHERE / ORDER BY mantığı

Hızlı Kontrol

PostgreSQL'de koşullu toplama için en okunaklı yan tümce hangisidir?

Sıkça Sorulan Sorular

“CASE İfadeleri ve Özet Tablo Sorguları” dersi ücretsiz mi?

Evet — “CASE İfadeleri ve Özet Tablo Sorguları” 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.

“CASE İfadeleri ve Özet Tablo Sorguları” dersinde ne öğreneceğim?

Uzun tabloları geniş çapraz tablo raporlarına dönüştürmek için toplamaların içinde CASE WHEN kullanın. 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 3. dersidir.

“CASE İfadeleri ve Özet Tablo Sorguları” 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

  1. UNION, INTERSECT, EXCEPT
  2. UNION ALL ve UNION Karşılaştırması (Tekilleştirme Maliyeti)
  3. CASE İfadeleri ve Özet Tablo Sorguları
  4. Çapraz Tablo Kalıpları (PostgreSQL crosstab())
← SQL Academy Sayfasına Dön