Table: SeasonStats
+------------------+---------+ | Column Name | Type | +------------------+---------+ | season_id | int | | team_id | int | | team_name | varchar | | matches_played | int | | wins | int | | draws | int | | losses | int | | goals_for | int | | goals_against | int | +------------------+---------+ (season_id, team_id) is the unique key for this table. This table contains season id, team id, team name, matches played, wins, draws, losses, goals scored (goals_for), and goals conceded (goals_against) for each team in each season.
Write a solution to calculate the points, goal difference, and position for each team in each season. The position ranking should be determined as follows:
Points are calculated as follows:
3 points for a win1 point for a draw0 points for a lossGoal difference is calculated as: goals_for - goals_against
Return the result table ordered by season_id in ascending order, then by position in ascending order, and finally by team_name in ascending order.
The query result format is in the following example.
Example:
Input:
SeasonStats table:
+------------+---------+-------------------+----------------+------+-------+--------+-----------+---------------+ | season_id | team_id | team_name | matches_played | wins | draws | losses | goals_for | goals_against | +------------+---------+-------------------+----------------+------+-------+--------+-----------+---------------+ | 2021 | 1 | Manchester City | 38 | 29 | 6 | 3 | 99 | 26 | | 2021 | 2 | Liverpool | 38 | 28 | 8 | 2 | 94 | 26 | | 2021 | 3 | Chelsea | 38 | 21 | 11 | 6 | 76 | 33 | | 2021 | 4 | Tottenham | 38 | 22 | 5 | 11 | 69 | 40 | | 2021 | 5 | Arsenal | 38 | 22 | 3 | 13 | 61 | 48 | | 2022 | 1 | Manchester City | 38 | 28 | 5 | 5 | 94 | 33 | | 2022 | 2 | Arsenal | 38 | 26 | 6 | 6 | 88 | 43 | | 2022 | 3 | Manchester United | 38 | 23 | 6 | 9 | 58 | 43 | | 2022 | 4 | Newcastle | 38 | 19 | 14 | 5 | 68 | 33 | | 2022 | 5 | Liverpool | 38 | 19 | 10 | 9 | 75 | 47 | +------------+---------+-------------------+----------------+------+-------+--------+-----------+---------------+
Output:
+------------+---------+-------------------+--------+-----------------+----------+ | season_id | team_id | team_name | points | goal_difference | position | +------------+---------+-------------------+--------+-----------------+----------+ | 2021 | 1 | Manchester City | 93 | 73 | 1 | | 2021 | 2 | Liverpool | 92 | 68 | 2 | | 2021 | 3 | Chelsea | 74 | 43 | 3 | | 2021 | 4 | Tottenham | 71 | 29 | 4 | | 2021 | 5 | Arsenal | 69 | 13 | 5 | | 2022 | 1 | Manchester City | 89 | 61 | 1 | | 2022 | 2 | Arsenal | 84 | 45 | 2 | | 2022 | 3 | Manchester United | 75 | 15 | 3 | | 2022 | 4 | Newcastle | 71 | 35 | 4 | | 2022 | 5 | Liverpool | 67 | 28 | 5 | +------------+---------+-------------------+--------+-----------------+----------+
Explanation:
We can use the window function RANK() to rank the teams by grouping them by season and sorting based on points, goal difference, and team name.
Finally, we just need to sort by season_id, position, and team_name.
Pandas
Will anyone have a shot on goal? #Shorts • Premier League • 88,158,793 views views
Watch 9 more video solutions →Practice Premier League Table Ranking III with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor