SELECT ve WHERE İçinde Skaler Alt Sorgular
Tek değer döndüren alt sorguları ve birden fazla satır döndürdüklerinde oluşan hatayı öğrenin.
SELECT ve WHERE İçinde Skaler Alt Sorgular, CoddyKit'te ücretsiz bir SQL 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, 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.
Mülakatçı Skaler Alt Sorgu Dediğinde Ne Kastedilir
Skaler alt sorgu, tam olarak bir satır ve bir sütun döndüren, yani tek bir değer üreten sorgudur. Tek bir değere dönüştüğü için SQL, bunu bir sabitin kullanılabileceği neredeyse her yerde kullanmanıza izin verir: SELECT, WHERE, HAVING ve hatta ORDER BY içinde.
- Mülakatçılar, bir satır, bir sütun kuralını bilip bilmediğinizi sınar.
- Klasik tuzak şudur: Birden fazla satır döndüren bir alt sorgu yanlışlıkla kullanılır.
Bu tanımı açık ve düzgün bir şekilde ifade edebiliyorsanız, ilk aşamayı zaten geçmişsiniz demektir.
SELECT Listesinde Skaler Alt Sorgu
SELECT listesine bir skaler alt sorgu eklemek, her sonuç satırına hesaplanmış tek bir değer eklemenizi sağlar. Burada her çalışanın yanında şirket genelindeki ortalama maaşı gösteriyoruz.
(SELECT AVG(salary) FROM employees) alt sorgusu çalışır ve tüm tabloyu tek bir sayıya indirger; ardından bu sayı her satırda tekrarlanır.
SELECT
name,
salary,
(SELECT AVG(salary) FROM employees) AS company_avg
FROM employees;WHERE İçinde Skaler Alt Sorgu
Aynı tek değer bir filtreyi de yönlendirebilir. Mülakatlarda çok sık sorulan bir soru şudur: şirket ortalamasından daha fazla kazanan herkesi bulun.
Alt sorgu ortalamayı bir kez hesaplar, ardından dış sorgudaki her satır bu değerle karşılaştırılır. Bu sorgu ilişkili değildir; iç sorgu dış satıra bağlı olmadığından yalnızca bir kez çalışır.
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);Birden Fazla Satır Hatası
Mülakatçıların öngörmenizi beklediği hata budur. Alt sorgunuz = veya > ile kullanılıyor ancak birden fazla satır döndürüyorsa veritabanı motoru şu hatayı verir:
- Postgres: bir ifade olarak kullanılan alt sorgu birden fazla satır döndürdü
- MySQL: Alt sorgu 1'den fazla satır döndürüyor
Aşağıdaki sorgu başarısız olur; çünkü 5. departmanda birden fazla çalışan bulunabilir ve alt sorgu skaler değildir.
SELECT name
FROM employees
WHERE salary = (SELECT salary FROM employees WHERE dept_id = 5);Alt Sorguyu Skaler Olmaya Zorlama
Tek bir değer döndürüleceğini garanti etmenin iki güvenilir yolu vardır:
MAX,MINveyaAVGgibi bir toplama işlevi kullanın.GROUP BYolmadan kullanılan toplama işlevleri her zaman tek satır döndürür.- Bir
ORDER BYifadesinden sonraLIMIT 1(Postgres/MySQL) veyaFETCH FIRST 1 ROW ONLYkullanın.
Aşağıdaki düzeltilmiş sürüm, 5. departmandaki en yüksek tek maaşı ister.
SELECT name
FROM employees
WHERE salary = (
SELECT MAX(salary) FROM employees WHERE dept_id = 5
);Skaler Alt Sorgular Hiç Satır Yoksa NULL Döndürür
İnce ama mülakatlarda önemli bir nokta: Bir skaler alt sorgu sıfır satırla eşleşirse hata vermez; NULL döndürür. Bu NULL daha sonra karşılaştırmanıza yayılır.
salary > NULL ifadesi TRUE yerine UNKNOWN olarak değerlendirildiğinden dış sorgu hiçbir satır döndürmez. Adaylar burada genellikle hata bekler; doğru yanıt sessizce boş sonuç döndürmesidir.
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees WHERE dept_id = 9999
);Çalışılmış Örnek: Farkıyla Ortalama Üstü Kazananlar
Her iki kullanımı birleştirelim. Ortalama üstü kazananları ve ortalamanın ne kadar üzerinde olduklarını gösteriyoruz. Aynı skaler alt sorgu SELECT ve WHERE içinde yer alıyor.
Mülakatçı alt sorgunun iki kez çalışıp çalışmadığını sorabilir. Mantıksal olarak iki kez görünür; ancak iyi bir iyileştirici, ilişkisiz alt sorguyu tek bir kez değerlendirip sonucu yeniden kullanabilir.
SELECT
name,
salary,
salary - (SELECT AVG(salary) FROM employees) AS above_avg
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees)
ORDER BY above_avg DESC;ORDER BY İçinde Skaler Alt Sorgu
Skaler alt sorgu yalnızca bir değer olduğundan ORDER BY içinde kullanılması da geçerlidir. Bu, nadiren en temiz yaklaşımdır; ancak mülakatçılar bunun mümkün olduğunu bilip bilmediğinizi doğrulamayı sever.
Burada başka bir tablodan alınan bir değere, yani her departmandaki çalışan sayısına göre departmanları birleştirme yapmadan sıralıyoruz.
SELECT d.dept_name
FROM departments d
ORDER BY (
SELECT COUNT(*) FROM employees e WHERE e.dept_id = d.id
) DESC;Skaler ve İlişkili Alt Sorgu: Ayrımı Bilmek
Yukarıdaki ORDER BY örneği, dış sorgudan gelen d.id değerine gizlice başvuruyor. Bu durum onu, her dış satır için bir kez çalışan ilişkili bir skaler alt sorgu yapar.
Mülakatçılar bu ayrımı çok önemser:
- İlişkisiz skaler alt sorgu: Kendi içinde tamamdır ve bir kez çalışır.
- İlişkili skaler alt sorgu: Dış satıra başvurur ve her satır için çalışır.
Her ikisi de hâlâ skalerdir (tek değer döndürür), ancak performansları büyük ölçüde farklıdır.
Skaler Alt Sorgu İçin NOT Kullanılmaması Gereken Durumlar
SELECT listesindeki ilişkili bir skaler alt sorgu kullanışlıdır; ancak büyük tablolarda yavaş olabilir, çünkü her satır için çalıştırılır. Mülakatçılar alternatifleri bilmenizi bekler:
- Önceden toplama yapılmış türetilmiş bir tabloya
LEFT JOINuygulamak. AVG(salary) OVER ()gibi bir pencere işlevi kullanmak.
Aşağıdaki pencere biçimi, ayrı bir alt sorgu taraması olmadan aynı şirket ortalaması sütununu üretir.
SELECT
name,
salary,
AVG(salary) OVER () AS company_avg
FROM employees;Mülakat İçin Kısa Yanıt
Skaler alt sorguyu tanımlamanız istenirse şöyle söyleyin: "Skaler alt sorgu bir satır ve bir sütun döndürür; bu nedenle tek bir değer gibi davranır ve bir sabitin kullanılabildiği her yerde kullanılabilir. Birden fazla satır döndürürse veritabanı motoru hata verir; hiç satır döndürmezse NULL üretir."
Bu tek cümle tanımı, hata durumunu ve NULL özel durumunu, yani her mülakatçının duymayı beklediği üç noktayı kapsar.
Hızlı Kontrol
Skaler alt sorguların davranışını anlayıp anlamadığınızı sınayın.
Özet
Artık skaler alt sorgulara hâkimsiniz:
- Tanım: Bir satır ve bir sütun döndürür; sabit değer gibi SELECT, WHERE, HAVING ve ORDER BY içinde kullanılabilir.
- Birden fazla satır ile =/> kullanılması hataya yol açar; bir toplama işlevi veya
LIMIT 1kullanarak alt sorguyu skaler olmaya zorlayın. - Sıfır satır NULL üretir ve bu değer bir filtrede satırların sessizce elenmesine neden olur.
- İlişkili skaler alt sorgular her satır için çalışır; performans önemli olduğunda birleştirmeleri veya pencere işlevlerini tercih edin.
Sırada, sonucun sanal bir tablonun tamamı olduğu FROM yan tümcesindeki alt sorgular var.
Sıkça Sorulan Sorular
“SELECT ve WHERE İçinde Skaler Alt Sorgular” dersi ücretsiz mi?
Evet — “SELECT ve WHERE İçinde Skaler Alt 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 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 ve WHERE İçinde Skaler Alt Sorgular” dersinde ne öğreneceğim?
Tek değer döndüren alt sorguları ve birden fazla satır döndürdüklerinde oluşan hatayı öğrenin. 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 1. dersidir.
“SELECT ve WHERE İçinde Skaler Alt 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 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
- SELECT ve WHERE İçinde Skaler Alt Sorgular
- FROM Yan Tümcesinde Alt Sorgular (Türetilmiş Tablolar)
- IN, ANY ve ALL Alt Sorguları
- EXISTS ve IN Performans Karşılaştırması