Subqueries Part 2
Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 39 / 72.
Alt sorguların üç ana türü vardır:
- Scalar Subqueries - Tek bir değer döndürür (bir satır, bir sütun)
- Row Subqueries - Birden fazla sütunu olan tek bir satır döndürür
- Table Subqueries - Birden fazla satır ve sütun döndürür
Örneğin, her alt sorgu türü için bazı kullanım örnekleri şunlardır:
Scalar Subquery - Ortalama maaştan daha fazla kazanan çalışanları bulun:
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);Satır Alt Sorgusu - Alice ile aynı departman ve maaşa 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öster
SELECT department, count
FROM (
SELECT department, COUNT(*) as count
FROM employees
GROUP BY department
) as dept_counts;Kullanım durumlarına dikkat edin:
- Scalar - Basit karşılaştırmalar (>, <, =)
- Birden fazla sütunu eşleştirmeniz gerektiğinde
- Sonuç kümesinden sorgu yapmanız gerektiğinde
Görev
KolayMevcut tablolar ve sütunlar:
shop:price,quantity,category,list_date
Mağazada tüm miktarların ortalamasından daha fazla toplam miktara sahip kategorileri bulun.
Önemli: Ortalamayı hesaplamak için HAVING yan tümcesi içinde bir alt sorgu kullanmalısınız. Sabit kodlanmış bir değer veya ayrı bir sorgu kullanmayın — alt sorgu HAVING içinde doğrudan shop tablosundan AVG(quantity) hesaplamalıdır.
Çözüm adımları:
- İlk olarak, mağazada tüm miktarların ortalamasını hesaplayan bir alt sorgu yazın:
SELECT AVG(quantity) FROM shop - Sonra, her kategori için miktarlarını toplayın ve
HAVINGanahtar kelimesini kullanarak bu alt sorgu ile karşılaştırın
Kopya kağıdı
Alt sorguların üç ana türü vardır:
- Skaler Alt Sorgular - Tek bir değer döndürür (bir satır, bir sütun)
- Satır Alt Sorgular - Birden fazla sütun içeren tek bir satır döndürür
- Tablo Alt Sorgular - Birden fazla satır ve sütun döndürür
Skaler Alt Sorgu - Basit karşılaştırmalar (>, <, =):
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);Satır Alt Sorgu - Birden fazla sütunu eşleştirin:
SELECT name
FROM employees
WHERE (department, salary) = (
SELECT department, salary
FROM employees
WHERE name = 'Alice'
);Tablo Alt Sorgu - Sonuç kümesinden sorgu:
SELECT department, count
FROM (
SELECT department, COUNT(*) as count
FROM employees
GROUP BY department
) as dept_counts;Kendin dene
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns