-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathleague_statistics.sql
More file actions
79 lines (65 loc) · 1.6 KB
/
league_statistics.sql
File metadata and controls
79 lines (65 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
CREATE TABLE Teams (
team_id INT,
team_name VARCHAR(50)
);
-- Insert into Teams
INSERT INTO Teams (team_id, team_name) VALUES
(1, 'Ajax'),
(4, 'Dortmund'),
(6, 'Arsenal');
CREATE TABLE Matches (
home_team_id INT,
away_team_id INT,
home_team_goals INT NOT NULL,
away_team_goals INT NOT NULL
);
-- Insert into Matches
INSERT INTO Matches (home_team_id, away_team_id, home_team_goals, away_team_goals) VALUES
(1, 4, 0, 1),
(1, 6, 3, 3),
(4, 1, 5, 2),
(6, 1, 0, 0);
SELECT * FROM Teams
SELECT * FROM Matches
-- find the fields for home_team
WITH home_team AS
(
SELECT
home_team_id AS team_id,
CASE WHEN home_team_goals > away_team_goals THEN 3
WHEN home_team_goals = away_team_goals THEN 1
ELSE 0 END AS points,
home_team_goals AS goal_for,
away_team_goals AS goal_against
FROM Matches
),
-- find the fields for away_team
away_team AS
(
SELECT
away_team_id AS team_id,
CASE WHEN home_team_goals > away_team_goals THEN 0
WHEN home_team_goals = away_team_goals THEN 1
ELSE 3 END AS points,
away_team_goals AS goal_for,
home_team_goals AS goal_against
FROM Matches
),
total_team AS
(
SELECT * FROM home_team
UNION ALL
SELECT * FROM away_team
)
SELECT
team_name,
COUNT(TT.team_id) AS matches_played,
SUM(TT.points) AS points,
SUM(TT.goal_for) AS goal_for,
SUM(TT.goal_against) AS goal_against,
SUM(TT.goal_for) - SUM(TT.goal_against) AS goal_diff
FROM total_team TT
JOIN Teams T
ON TT.team_id = T.team_id
GROUP BY team_name
ORDER BY points DESC, goal_diff DESC, team_name ASC