Menu
Coddy logo textTech

Subqueries Part 2

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 39 / 72.

Üç ana alt sorgu türü vardır:

  1. Skaler Alt Sorgular - Tek bir değer döndürür (tek satır, tek sütun)
  2. Satır Alt Sorguları - Birden fazla sütun içeren tek bir satır döndürür
  3. Tablo Alt Sorguları - Birden fazla satır ve sütun döndürür

Örneğin, her alt sorgu türü için bazı kullanım senaryoları şunlardır:

Skaler Alt Sorgu - Ortalama maaştan fazla kazanan çalışanları bulun:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Satır Alt Sorgusu (Row Subquery) - Alice ile aynı department ve salary değerine sahip çalışan(lar)ı bulun

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Tablo Alt Sorguları - Departmanları ve çalışan sayılarını gösterin

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Kullanım senaryolarına dikkat edin:

  • Skalar - Basit karşılaştırmalar (>, <, =)
  • Birden fazla sütunu eşleştirmeniz gerektiğinde
  • Bir sonuç kümesinden sorgulama yapmanız gerektiğinde
challenge icon

Görev

Kolay

Kullanılabilir tablolar ve sütunlar:

  • shop: price, quantity, category, list_date

Toplam miktarları (quantity), mağazadaki tüm miktarların ortalamasından daha büyük olan kategorileri (category) bulun.

Önemli: Ortalamayı hesaplamak için HAVING ifadesi içinde bir alt sorgu (subquery) kullanmalısınız. Sabit kodlanmış bir değer veya ayrı bir sorgu kullanmayın — alt sorgu doğrudan HAVING içinde shop tablosundan AVG(quantity) değerini hesaplamalıdır.

Çözüm adımları:

  1. İlk olarak, mağazadaki tüm miktarların ortalamasını hesaplayan bir alt sorgu yazın: SELECT AVG(quantity) FROM shop
  2. Ardından, her bir category için miktarları toplayın (SUM) ve HAVING anahtar kelimesini kullanarak bu alt sorgu ile karşılaştırın

Kendin dene

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler