SELECT içinde CASE İfadeleri
Satır içi koşullu mantık ile aranan ve basit CASE biçimlerini yazın.
SELECT içinde CASE İfadeleri, CoddyKit'te ücretsiz bir SQL Interview Prep 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 Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.
CASE: SQL'in Koşullu İfadesi
CASE, SQL'in if/then/else yapısıdır; ancak tek bir değer döndüren bir ifadedir. Bu nedenle bir değerin kullanılabildiği her yerde, yani SELECT, WHERE, ORDER BY içinde ve hatta toplama işlevlerinin içinde kullanılabilir.
SELECT order_id,
amount,
CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;Aramalı CASE Biçimi
Aramalı CASE, her WHEN koşulundaki mantıksal değeri denetler ve ilk eşleşmeyi döndürür. En esnek biçim budur; sıra önemlidir, çünkü ilk doğru koşul kazanır.
SELECT score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM exam_results;Basit CASE Biçimi
Basit CASE, tek bir ifadeyi bir değerler listesiyle karşılaştırır. Eşitlik denetimleri için daha kısadır; ancak aralıkları veya NULL denetimlerini gerçekleştiremez.
SELECT status_code,
CASE status_code
WHEN 1 THEN 'active'
WHEN 2 THEN 'paused'
WHEN 3 THEN 'closed'
ELSE 'unknown'
END AS status_label
FROM accounts;Aramalı ve Basit CASE: Hangisi Ne Zaman Kullanılır
Sabit değerlerle eşitlik denetimi için basit CASE, aralıklar veya NULL için aramalı CASE kullanın. Önemli tuzak: Basit CASE hiçbir zaman NULL ile eşleşemez; aramalı biçimde IS NULL kullanın.
-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
ELSE 'has bonus'
END AS bonus_flag
FROM employees;WHEN Dallarının Sırası Önemlidir
İlk eşleşen dal kazandığı için WHEN koşullarınızı en özeldenden en genele doğru sıralayın. Gevşek bir eşiği önce koyarsanız 95 puanı yanlış etiketleyebilirsiniz.
-- Correct order: highest threshold first
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C or below'
END AS grade
FROM exam_results;ELSE ve Örtük NULL
Hiçbir koşul eşleşmez ve ELSE bölümünü atlarsanız CASE, NULL döndürür. Beklenmeyen değerlerin fark edilmeden NULL'a dönüşmemesi için varsayılan değerinizi açık bir ELSE ile belirtin.
-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;Koşullu Toplama (Pivot Deseni)
Mülakatlarda en değerli tekniklerden biri koşullu toplamadır. Tek geçişte kategori başına satırları saymak için CASE'i SUM veya COUNT içine yerleştirin; böylece düzenli, pivot tarzı bir rapor elde edersiniz.
SELECT
SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid_orders,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END) AS paid_revenue
FROM orders;COUNT NULL'ları Yok Sayar: CASE Kısayolu
COUNT NULL değerlerini yok saydığı için ELSE bölümünü atlayabilirsiniz; böylece eşleşmeyen satırlar NULL olur ve sayılmaz. Bu, koşullu sayım yapmanın biraz daha kısa bir yoludur.
SELECT
COUNT(CASE WHEN status = 'paid' THEN 1 END) AS paid_orders,
COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;Özel Sıralama İçin ORDER BY İçinde CASE
Yalnızca alfabetik veya sayısal sıraya bağlı kalmak yerine özel önceliğe göre sıralamak için ORDER BY içinde CASE kullanın; örneğin acil olanları normal olanlardan, onları da diğer her şeyden önce göstermek için.
SELECT order_id, status
FROM orders
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'normal' THEN 2
ELSE 3
END,
order_id;Dallar Arasında Tür Tutarlılığı
CASE'in tüm dalları uyumlu bir tür döndürmelidir. Sayı ile metni karıştırmak hataya veya zorunlu bir tür dönüşümüne yol açabilir; tek bir çıktı türü seçin ve gerekirse türü açıkça dönüştürün.
-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
ELSE 'none'
END AS qty_label
FROM inventory;Koşullu Filtreleme İçin WHERE İçinde CASE
WHERE içinde CASE, bir işarete göre farklı filtreleme mantıkları uygulamanızı sağlar; örneğin her bölge için farklı bir fiyat eşiği belirlemek gibi. Bu, çoğu zaman karmaşık bir AND ve OR dizisinden daha temizdir.
SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
WHEN 'US' THEN 100
WHEN 'EU' THEN 90
ELSE 50
END;Hızlı Kontrol
Sonucu tahmin edin.
Özet
Özet: CASE tek bir değer döndürür ve SELECT, WHERE, ORDER BY ile toplama işlevlerinde çalışır. Aramalı CASE aralıkları ve NULL değerlerini ele alır; ilk eşleşme kazanır, eşleşme yoksa NULL döner ve dal türleri uyumlu olmalıdır.
Sıkça Sorulan Sorular
“SELECT içinde CASE İfadeleri” dersi ücretsiz mi?
Evet — “SELECT içinde CASE İfadeleri” 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 Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.
“SELECT içinde CASE İfadeleri” dersinde ne öğreneceğim?
Satır içi koşullu mantık ile aranan ve basit CASE biçimlerini yazın. SQL 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.
SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL 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 4. dersidir.
“SELECT içinde CASE İfadeleri” 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 Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL 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
- Sütunları Seçme ve Takma Ad Tuzakları
- Hesaplanan Sütunlar ve İfade Önceliği
- Benzersizlik için DISTINCT ve GROUP BY Karşılaştırması
- SELECT içinde CASE İfadeleri