CTE'leri bir araya getirme
Artık ev sahibi ve deplasman rakiplerini belirleyen iki alt sorguyu oluşturdun; şimdi sorgunu home ve away alt sorgularını Common Table Expressions (CTE) olarak kullanacak şekilde yeniden düzenleme zamanı. Ana sorguda SELECT DISTINCT ifadesinin yer aldığını fark edeceksin. Yalnızca DISTINCT maçları seçmezsen, oynanan her maç için yinelenen kayıt döndürebilirsin.
Sorguyu oluşturmaya devam ederek Manchester United'ın 2014/2015 sezonunda oynadığı tüm maçları çıkar.
Bu egzersiz, kursun bir parçasıdır
SQL ile Veri İşleme
Egzersiz talimatları
- Ana sorgundan önce
homeveawayCTE'lerini tanımla. - CTE'lerini
LEFT JOINkullanarak match tablosuna bağla. - CTE'lerden ilgili verileri ana sorguya seç.
- Ana sorguda tarihin
matchtablosundan, takım adlarının CTE'lerden ve ev/deplasman gollerininmatchtablosundan seçildiğinden emin ol.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
-- Set up the home team CTE
___ ___ ___ (
SELECT m.id, t.team_long_name,
CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
WHEN m.home_goal < m.away_goal THEN 'MU Loss'
ELSE 'Tie' END AS outcome
FROM match AS m
LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
SELECT m.id, t.team_long_name,
CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
WHEN m.home_goal < m.away_goal THEN 'MU Win'
ELSE 'Tie' END AS outcome
FROM match AS m
LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
___.___,
___.___ AS home_team_name,
___.___ AS away_team_name,
___.___,
m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
AND (home.team_long_name = 'Manchester United'
OR away.team_long_name = 'Manchester United');