BaşlayınÜcretsiz başlayın

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

Kursa Göz Atın

Egzersiz talimatları

  • Ana sorgundan önce home ve away CTE'lerini tanımla.
  • CTE'lerini LEFT JOIN kullanarak match tablosuna bağla.
  • CTE'lerden ilgili verileri ana sorguya seç.
  • Ana sorguda tarihin match tablosundan, takım adlarının CTE'lerden ve ev/deplasman gollerinin match tablosundan 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');
Kodu Düzenle ve Çalıştır