Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi
ASC/DESC karışımını ve NULLS FIRST/LAST davranışının veritabanları arasında nasıl değiştiğini öğrenin.
Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 1. 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.
Sıralama Mülakatlarda Neden Gündeme Gelir
Mülakat yapanlar ORDER BY konusunu erkenden gündeme getirir; çünkü bu, bir SQL sonuç kümesinin varsayılan olarak sırasız olduğunu anlayıp anlamadığınızı gösterir. Açıkça belirtilmiş bir sıralama olmadığında veritabanı, satırları istediği herhangi bir sırada döndürmekte serbesttir.
Sık kullanılan başlangıç sorusu şudur: "Satırların belirli bir sırada dönmesini nasıl garanti edersiniz?" Tek doğru yanıt, açıkça belirtilmiş bir ORDER BY yan tümcesidir. Ekleme sırasına, birincil anahtar sırasına veya dizin sırasına güvenmek, acemi geliştiricilerin klasik hatasıdır.
Bu derste çok sütunlu sıralamalarda ustalaşacak ve NULL değerlerinin nereye yerleştiğiyle ilgili çetin soruyu öğreneceksiniz.
ASC ve DESC Temelleri
ORDER BY, varsayılan olarak artan düzende (ASC) sıralar. Tersine çevirmek için yalnızca DESC kullanmanız gerekir. Yön, tüm yan tümceye değil, her sütuna ayrı ayrı uygulanır.
Mülakat ipucu: ASC'nin örtük varsayılan olduğunu belirtin; böylece bunu yazmanız gerekmez. Birçok aday yanlışlıkla tek bir DESC ifadesinin tüm sütunları tersine çevirdiğini düşünür.
SELECT name, hire_date
FROM employees
ORDER BY hire_date DESC;Birden Çok Sütuna Göre Sıralama
Birkaç sütunu virgülle ayırarak listeleyin. SQL önce ilk sütuna göre sıralar, ardından eşitlikleri ikinci sütunla ve böyle devam ederek bozar. Bunu bir eşitlik bozucu zinciri olarak düşünün.
Örnekte önce departman alfabetik olarak, her departmanın içinde de maaş en yüksekten başlayacak şekilde sıralanır.
- Birincil sıralama:
departmentartan düzende - Eşitlik bozucu:
salaryazalan düzende
SELECT department, name, salary
FROM employees
ORDER BY department ASC, salary DESC;ASC ve DESC'yi Birlikte Kullanma
Sık karşılaşılan bir mülakat tuzağı şudur: her sütunun kendine ait bir yönü vardır. ORDER BY a, b DESC yazmak, her ikisini de azalan düzende değil, a sütununu artan ve b sütununu azalan düzende sıralar.
İkisinin de azalan düzende olmasını istiyorsanız ORDER BY a DESC, b DESC demelisiniz. Soru farklı yönleri bir arada içeriyorsa açık olun.
SELECT region, sales_year, revenue
FROM sales
ORDER BY region ASC, sales_year DESC;NULL Değerleri Nereye Gider
Bu dersin özü budur. NULL, bilinmeyen anlamına gelir; bu nedenle standart belirli bir konum dayatmaz ve veritabanları varsayılan olarak farklı davranır:
- PostgreSQL & Oracle: NULL değerleri
ASCiçinde sonda,DESCiçinde başta sıralanır. - MySQL & SQL Server: NULL değerleri
ASCiçinde başta,DESCiçinde sonda sıralanır (en küçük değer olarak ele alınır).
Mülakat yapanlar "Bu sıralamada NULL değerleri nerede görünür?" sorusunu sormayı sever. Dürüst yanıt şudur: konumu açıkça denetlemediğiniz sürece bu, kullanılan motora bağlıdır.
NULL Konumunu Açıkça Denetleme
Motorun varsayılanlarından bağımsız olarak konumu belirli hâle getirmek için NULLS FIRST veya NULLS LAST kullanın. PostgreSQL, Oracle ve SQLite bunları doğrudan destekler.
Aşağıdaki sorgu, sütun artan düzende sıralansa bile bilinmeyen işe alım tarihlerini alta zorlar.
SELECT name, hire_date
FROM employees
ORDER BY hire_date ASC NULLS LAST;MySQL'de NULLS LAST Davranışını Taklit Etme
MySQL, NULLS LAST anahtar sözcüğünü desteklemez. Farklı sistemlerde çalışabilen çözüm, değerin NULL olup olmadığını belirten bir ilk sıralama anahtarı kullanmaktır.
hire_date IS NULL ifadesi gerçek tarihler için 0, NULL değerleri için 1 döndürür. Bunu artan düzende sıralamak NULL değerlerini sona iter; ardından ikinci anahtar gerçek tarihleri sıralar.
SELECT name, hire_date
FROM employees
ORDER BY (hire_date IS NULL) ASC, hire_date ASC;SQL Server'da NULLS FIRST Davranışını Taklit Etme
SQL Server da NULLS FIRST/LAST desteğinden yoksundur. İlk sıralama anahtarı olarak bir CASE ifadesi kullanın. Burada NULL değerlerine 0 sırası verildiği için önce görünürler.
Bu kalıp ezberlemeye değerdir: gerçek sıralama sütunundan önce yerleştirilen hesaplanmış bir işaret sütunu, herhangi bir SQL lehçesinde NULL konumu üzerinde tam denetim sağlar.
SELECT name, hire_date
FROM employees
ORDER BY CASE WHEN hire_date IS NULL THEN 0 ELSE 1 END,
hire_date ASC;Uygulamalı Örnek: Puan Tablosu
Bir puan tablosu oluşturduğunuzu varsayalım: en yüksek puan önce gelir; puanlar eşitse en erken kaydolan oyuncu daha üst sırada yer alır. Hiç puan almamış oyuncular (NULL puan) en alta yerleşmelidir.
Sıralama için üç anahtar gerekir: bir NULL işareti, azalan düzende puan ve eşitlik bozucu olarak artan düzende kayıt tarihi.
SELECT player, score, signup_date
FROM players
ORDER BY (score IS NULL) ASC,
score DESC,
signup_date ASC;Sıralamanın Kararlılığıyla İlgili Uyarı
Sık sorulan bir başka soru şudur: "İki satır her ORDER BY anahtarında eşitse hangi sırayla döner?"
Yanıt: tanımsızdır. SQL sıralamalarının kararlı olacağı garanti edilmez; bu nedenle eşit satırlar birbirlerine göre herhangi bir sırada görünebilir ve bu sıra çalıştırmalar arasında veya bir dizin değişikliğinden sonra değişebilir.
Çözüm, genellikle birincil anahtar olan tamamen benzersiz bir eşitlik bozucu ekleyerek sonucu yeniden üretilebilir hâle getirmektir.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC;Sıralamayla İlgili Performans Notu
Sıralama pahalı olabilir. ORDER BY, sütun sırası ve yönleri aynı olan mevcut bir dizinle eşleşiyorsa motor satırları önceden sıralanmış olarak okuyabilir ve ayrı bir sıralama adımını atlayabilir.
Uyuşmayan yönler (örneğin dizin tamamen artan yönde olduğu hâlde bir sütunu azalan yönde sıralamanız) genellikle bunu engeller ve bellekte veya diskte sıralama yapılmasını zorunlu kılar. Dizin sırası ile sıralama maliyeti arasındaki bu bağlantıyı belirtmek, mülakat yapan kişiye yetkinliğinizi gösterir.
Hızlı Kontrol
Çok sütunlu yön kurallarını kavrayışınızı sınayın.
Özet
Çok sütunlu sıralama ve NULL konumuyla ilgili temel çıkarımlar:
ORDER BYeklemediğiniz sürece sonuç kümeleri sırasızdır.- Yön her sütun için ayrıdır; varsayılan değer
ASC'dir. - NULL konumu motora göre değişir: Postgres/Oracle için
ASCiçinde sonda, MySQL/SQL Server içinASCiçinde başta. - Desteklendiği yerlerde
NULLS FIRST/LAST, diğer yerlerde ise ilk sıralama anahtarı olarakIS NULL/CASEişareti kullanın. - Yeniden üretilebilir bir sıra için benzersiz bir eşitlik bozucu (birincil anahtar gibi) ekleyin.
Sıkça Sorulan Sorular
“Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi” dersi ücretsiz mi?
Evet — “Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi” 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.
“Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi” dersinde ne öğreneceğim?
ASC/DESC karışımını ve NULLS FIRST/LAST davranışının veritabanları arasında nasıl değiştiğ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 1. dersidir.
“Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi” 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
- Birden Çok Sütuna Göre Sıralama ve NULL Yerleşimi
- LIMIT, OFFSET ve FETCH FIRST
- İlk N Satırı Güvenilir Şekilde Döndürme
- İfadelere ve Takma Adlara Göre Sıralama