CTE'lerle temizle
- bölümde, her bir ülkede toplam 10'dan fazla gol olan maçların sayısını içeren bir ülke listesi oluşturdun. O egzersizdeki sorgu, maçları ana sorguda saymadan önce filtrelemek için
FROMifadesinde bir alt sorgu kullandı. Aşağıda oluşturduğun sorgu yer alıyor:
SELECT
c.name AS country,
COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
SELECT country_id, id
FROM match
WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;
Bir (veya daha fazla) alt sorguyu, ana sorgundan önce tanımlayarak common table expressions (CTE) olarak listeleyebilirsin. Bu, bilgiyi düzenlemek ve mantıksal bir sıraya koymak için harika bir yöntemdir.
Bu egzersizde, benzer bir sorguyu bir CTE kullanarak yeniden yazalım.
Bu egzersiz, kursun bir parçasıdır
SQL ile Veri İşleme
Egzersiz talimatları
- CTE'ni tanımlamak için sözdizimini tamamla.
- CTE'nde
matchtablosundancountry_idve maçiddeğerlerini seç. - CTE'yi
country_idkullanarak league tablosuylaLEFT JOINyap.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
___
FROM match
WHERE (home_goal + away_goal) >= 10)
-- Select league name and count of matches from the CTE
SELECT
l.name AS league,
COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table using country_id
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;