Bir window fonksiyonu ekle
Harika! Artık maç tarihini, ev sahibi takımı, deplasman takımını ve her takımın attığı golleri getiren bir sonuç kümen var. Sorunun son bir bileşeni kaldı -- Manchester United her maçta ne kadar kötü kaybetti?
Bunu belirlemek için, ana sorguya home_goal ile away_goal arasındaki farkın mutlak değerine göre maçları sıralayan bir window fonksiyonu ekleyelim. Böylece Manchester United'ın ev sahibi mi yoksa deplasmanda mı oynadığını düşünmeden skor farklarını doğrudan karşılaştırabiliriz!
Denklem senin için tamamlandı -- yapman gereken tek şey window fonksiyonunu doğru şekilde tamamlamak!
Bu egzersiz, kursun bir parçasıdır
SQL ile Veri İşleme
Egzersiz talimatları
- CTE'leri, hem ev sahibi hem de deplasman takımlarının her birinin ad, ID ve skorla ilişkilendirileceği şekilde kur.
- Ana sorguda
date,home team name,away team name,home goalsveaway goalsdeğerlerini seç. - Maçları sırala ve skor farkına göre azalan düzende order et.
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 columns and and rank the matches by goal difference
SELECT DISTINCT
___,
___.___ AS home_team,
___.___ AS away_team,
m.home_goal, m.away_goal,
___() ___(___ ___ ABS(home_goal - away_goal) ___) as match_rank
-- 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' AND home.outcome = 'MU Loss')
OR (away.team_long_name = 'Manchester United' AND away.outcome = 'MU Loss'));