0Pricing
SQL Academy · Ders

Aranan ve Basit CASE

CASE yazmanın iki yolu.

Aranan ve Basit CASE, CoddyKit'te ücretsiz bir SQL Academy 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, 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 Yazmanın İki Yolu

SQL, CASE ifadesinin iki çeşidini sunar: Basit CASE ve Aramalı CASE. Her ikisi de koşullara göre bir değer döndürür, ancak bu koşulların yazılma biçimi farklıdır.

Bu dersin sonunda her biçimi ne zaman kullanacağınızı ve bunları karıştırırken yapılan yaygın hatalardan nasıl kaçınacağınızı bileceksiniz.

Basit CASE — Temel Fikir

Basit CASE, tek bir ifadeyi bir değer listesiyle karşılaştırır. Bunu bir arama tablosu gibi düşünebilirsiniz: solda bir sütun veya değer seçer, ardından her WHEN dalında bu değerin hangi değere eşit olduğunu listelersiniz.

Sözdizimi: CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default END

SELECT
  product_name,
  category_id,
  CASE category_id
    WHEN 1 THEN 'Electronics'
    WHEN 2 THEN 'Clothing'
    WHEN 3 THEN 'Books'
    ELSE 'Other'
  END AS category_name
FROM products;

Basit CASE Uygulamada

Burada CASE ifadesi anahtar sözcüğün hemen ardından gelir ve status sütunu, eşitlik kullanılarak her WHEN değerine karşılaştırılır. WHEN dallarında status = yazmadığınıza dikkat edin — karşılaştırma örtük olarak yapılır.

SELECT
  order_id,
  status,
  CASE status
    WHEN 'pending'   THEN 'Awaiting payment'
    WHEN 'paid'      THEN 'Payment received'
    WHEN 'shipped'   THEN 'On its way'
    WHEN 'delivered' THEN 'Completed'
    ELSE 'Unknown status'
  END AS status_label
FROM orders;

Aramalı CASE — Temel Fikir

Aramalı CASE biçiminde CASE anahtar sözcüğünün hemen ardından bir ifade bulunmaz. Bunun yerine her WHEN dalında tam bir Boole koşulu yer alır. Bu biçim çok daha esnektir: farklı sütunları birleştirebilir, aralık denetimleri kullanabilir veya her WHEN içinde işlev çağırabilirsiniz.

Sözdizimi: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END

SELECT
  employee_name,
  salary,
  CASE
    WHEN salary < 30000  THEN 'Entry Level'
    WHEN salary < 60000  THEN 'Mid Level'
    WHEN salary < 100000 THEN 'Senior'
    ELSE 'Executive'
  END AS salary_band
FROM employees;

Aramalı CASE Uygulamada

Her WHEN dalı herhangi bir Boole ifadesini kabul ettiğinden, tek bir dalda birden çok sütunu birleştirebilirsiniz. Veritabanı WHEN yan tümcelerini yukarıdan aşağıya değerlendirir ve ilk TRUE dalının sonucunu döndürür.

SELECT
  product_name,
  stock,
  price,
  CASE
    WHEN stock = 0              THEN 'Out of stock'
    WHEN stock < 10 AND price > 100 THEN 'Low stock — premium item'
    WHEN stock < 10             THEN 'Low stock'
    ELSE 'In stock'
  END AS availability
FROM products;

Temel Yapısal Fark

Aşağıdaki açıklama temel ayrımı özetler:

Basit CASE — CASE'ten sonra tek bir ifade bulunur; her WHEN, bu ifadeyle eşitlik karşılaştırması yapar.
Aramalı CASE — CASE'ten sonra ifade bulunmaz; her WHEN bağımsız bir Boole koşuludur.

Basit CASE yalnızca eşitlik denetimleri yaptığından aralıkları, NULL değerlerini veya birden çok sütun içeren koşulları işleyemez. Doğrudan değer eşleşmesinin ötesinde bir işlem için Aramalı CASE kullanın.

-- Simple CASE: equality only
SELECT CASE day_number
         WHEN 1 THEN 'Monday'
         WHEN 2 THEN 'Tuesday'
         ELSE 'Other'
       END AS day_name
FROM schedule;

-- Searched CASE: any condition
SELECT CASE
         WHEN day_number BETWEEN 1 AND 5 THEN 'Weekday'
         WHEN day_number IN (6, 7)        THEN 'Weekend'
       END AS day_type
FROM schedule;

NULL İşleme — Aramalı CASE Neden Daha İyi?

Basit CASE, dahili olarak = kullanır ve SQL'de NULL = NULL hiçbir zaman TRUE değildir. Bu nedenle Basit CASE, NULL olan bir sütunla eşleşemez. Aramalı CASE ile WHEN column IS NULL THEN ... yazabilirsiniz; bu ifade doğru şekilde çalışır.

-- Simple CASE: NULL branch never matches
SELECT CASE manager_id
         WHEN NULL THEN 'No manager'   -- this will NEVER fire
         ELSE 'Has manager'
       END
FROM employees;

-- Searched CASE: correct NULL check
SELECT CASE
         WHEN manager_id IS NULL THEN 'No manager'
         ELSE 'Has manager'
       END AS manager_status
FROM employees;

Aramalı CASE'te Sütunları Birleştirme

Aramalı CASE'in önemli bir gücü, her WHEN dalının tamamen farklı sütunlara başvurabilmesi veya işlev çağırabilmesidir. Bu sayede Basit CASE'in hiçbir şekilde işleyemeyeceği karmaşık iş kurallarını ifade edebilirsiniz.

SELECT
  customer_name,
  total_orders,
  total_spent,
  CASE
    WHEN total_spent > 10000 AND total_orders > 20 THEN 'VIP'
    WHEN total_spent > 5000                        THEN 'Gold'
    WHEN total_orders > 10                         THEN 'Silver'
    ELSE 'Standard'
  END AS tier
FROM customers;

ORDER BY İçinde CASE Kullanımı

Her iki CASE biçimi de ORDER BY içinde, verilerde bulunmayan özel bir sıralama düzeni oluşturmak için kullanılabilir. Burada Basit CASE, öncelik adlarını sayılara dönüştürerek satırların alfabetik sıraya göre değil, iş önceliğine göre sıralanmasını sağlar.

SELECT ticket_id, subject, priority
FROM support_tickets
ORDER BY
  CASE priority
    WHEN 'critical' THEN 1
    WHEN 'high'     THEN 2
    WHEN 'medium'   THEN 3
    WHEN 'low'      THEN 4
    ELSE 5
  END ASC;

Toplulaştırma İşlevlerinin İçinde CASE

Aramalı CASE'i SUM veya COUNT içine yerleştirmek, koşullu toplulaştırma için klasik bir örüntüdür; bu işlem bazen özet tablo olarak adlandırılır. Birden çok sorgu çalıştırmak yerine, tek bir taramada birden fazla kategori toplamı üretmenizi sağlar.

SELECT
  department,
  COUNT(*) AS total_employees,
  SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count,
  SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
  SUM(CASE WHEN salary > 70000 THEN salary ELSE 0 END) AS high_earner_payroll
FROM employees
GROUP BY department;

Doğru Biçimi Seçme

Pratik bir kural:

Tek bir sütunu bilinen sabit değerlerle eşleştiriyorsanız Basit CASE kullanın — daha kısa ve okunması daha kolaydır.
Diğer tüm durumlarda Aramalı CASE kullanın: aralıklar, NULL denetimleri, birden çok sütun içeren mantık veya koşulların içindeki işlev çağrıları.

Kararsız kaldığınızda Aramalı CASE her zaman çalışır. Hatta herhangi bir Basit CASE ifadesini Aramalı CASE olarak yeniden yazabilirsiniz; ancak bunun tersini yapamazsınız.

-- These two queries return identical results

-- Simple CASE (concise for equality)
SELECT CASE region_code
         WHEN 'US' THEN 'United States'
         WHEN 'UK' THEN 'United Kingdom'
         ELSE 'International'
       END AS region_name
FROM sales;

-- Equivalent Searched CASE
SELECT CASE
         WHEN region_code = 'US' THEN 'United States'
         WHEN region_code = 'UK' THEN 'United Kingdom'
         ELSE 'International'
       END AS region_name
FROM sales;

Hızlı Kontrol

Basit CASE ile Aramalı CASE arasındaki anlayışınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz:

Basit CASE — CASE'ten sonra tek bir ifade yerleştirilir; her WHEN, bu ifadenin belirli bir değere eşit olup olmadığını denetler. Tek bir sütunu sabit bir etiket listesiyle eşleştirmek için en uygundur.

Aramalı CASE — CASE'ten sonra ifade bulunmaz; her WHEN tam bir Boole koşulu içerir. Aralıkları, NULL denetimlerini, birden çok sütun içeren mantığı ve işlev çağrılarını destekler.

Her iki biçim de dalları yukarıdan aşağıya değerlendirir ve TRUE olan ilk dalın sonucunu döndürür. Hiçbir dal eşleşmez ve ELSE bulunmazsa sonuç NULL olur. En yüksek esneklik için Aramalı CASE her zaman güvenli seçimdir — Basit CASE'in yaptığı her şeyi ve daha fazlasını yapabilir.

Sıkça Sorulan Sorular

“Aranan ve Basit CASE” dersi ücretsiz mi?

Evet — “Aranan ve Basit CASE” 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.

“Aranan ve Basit CASE” dersinde ne öğreneceğim?

CASE yazmanın iki yolu. 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 2. dersidir.

“Aranan ve Basit CASE” 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. CASE İfadesi
  2. Aranan ve Basit CASE
  3. Verileri Gruplara Ayırma ve Etiketleme
  4. ORDER BY ve Toplamlarda CASE
← SQL Academy Sayfasına Dön