Tambahkan fungsi window
Fantastis! Sekarang Anda memiliki himpunan hasil yang mengambil tanggal pertandingan, tim kandang, tim tandang, dan jumlah gol yang dicetak masing-masing tim. Anda tinggal satu komponen terakhir dari pertanyaan ini — seberapa parah Manchester United kalah di setiap pertandingan?
Untuk menentukannya, mari tambahkan fungsi window pada kueri utama yang memeringkat pertandingan berdasarkan nilai absolut dari selisih antara home_goal dan away_goal. Ini memungkinkan kita membandingkan selisih skor secara langsung tanpa perlu mempertimbangkan apakah Manchester United bermain sebagai tim kandang atau tandang!
Persamaannya sudah lengkap untuk Anda — yang perlu Anda lakukan hanyalah melengkapi fungsi window dengan benar!
Latihan ini adalah bagian dari kursus
Manipulasi Data di SQL
Petunjuk latihan
- Siapkan CTE sehingga tim kandang dan tandang masing-masing memiliki nama, ID, dan skor yang terkait.
- Pilih
date,home team name,away team name,home goals, danaway goalsyang dicetak di kueri utama. - Peringkatkan pertandingan dan urutkan berdasarkan selisih skor secara menurun.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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'));