Přidej okenní funkci
Výborně! Teď máš výslednou sadu, která obsahuje datum zápasu, domácí tým, hostující tým a počty vstřelených gólů. Zbývá poslední část otázky – jak výrazně Manchester United v každém zápase prohrál?
Abys to zjistil/a, přidej do hlavního dotazu okenní funkci, která seřadí zápasy podle absolutní hodnoty rozdílu mezi home_goal a away_goal. Díky tomu můžeš přímo porovnat rozdíl skóre bez ohledu na to, jestli Manchester United hrál jako domácí nebo hostující tým!
Rovnice je už hotová – stačí jen správně doplnit okenní funkci!
Toto cvičení je součástí kurzu
Manipulace s daty v SQL
Pokyny k cvičení
- Nastav CTE tak, aby každý tým (domácí i hostující) měl přiřazený název, ID a skóre.
- V hlavním dotazu vyber
date, název domácího týmu, název hostujícího týmu, počet domácích gólů a počet gólů hostů. - Seřaď zápasy podle rozdílu ve skóre v sestupném pořadí.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- 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'));