-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjoin.sql
More file actions
100 lines (83 loc) · 2.32 KB
/
join.sql
File metadata and controls
100 lines (83 loc) · 2.32 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Q1.
-------------------
SELECT matchid, player FROM goal
WHERE teamid = 'GER'
Q2.
-------------------
SELECT id,stadium,team1,team2
FROM game
WHERE id = 1012
Q3.
-------------------
SELECT player, goal.teamid,stadium, game.mdate
FROM game JOIN goal ON (id=matchid)
WHERE goal.teamid = 'GER'
Q4.
-------------------
SELECT game.team1, game.team2, goal.player
FROM game JOIN goal
ON game.id = goal.matchid
WHERE goal.player LIKE 'Mario%'
Q5.
-------------------
SELECT player, teamid, coach, gtime
FROM goal JOIN eteam
ON teamid = id
WHERE gtime<=10
Q6.
-------------------
SELECT game.mdate, eteam.teamname
FROM game JOIN eteam
ON game.team1 = eteam.id
WHERE eteam.coach = 'Fernando Santos'
Q7.
-------------------
SELECT goal.player
FROM goal JOIN game
ON goal.matchid = game.id
WHERE game.stadium = 'National Stadium, Warsaw'
Q8.
-------------------
SELECT DISTINCT goal.player
FROM goal JOIN game
ON goal.matchid = game.id
WHERE (game.team1 = 'GER' AND goal.teamid != game.team1) OR (game.team2 = 'GER' AND goal.teamid != game.team2)
Q9.
-------------------
SELECT eteam.teamname, COUNT(goal.gtime)
FROM eteam JOIN goal
ON eteam.id = goal.teamid
GROUP BY eteam.teamname
Q10.
-------------------
SELECT game.stadium, COUNT(goal.gtime)
FROM game JOIN goal
ON game.id = goal.matchid
GROUP BY game.stadium
Q11.
-------------------
SELECT goal.matchid, MIN(game.date), COUNT(goal.gtime)
FROM game JOIN goal
ON game.id = goal.matchid
WHERE game.team1 = 'POL' OR game.team2 = 'POL'
GROUP BY goal.matchid
Q12.
-------------------
SELECT goal.matchid, MIN(game.mdate), COUNT(goal.player)
FROM game JOIN goal
ON game.id = goal.matchid
GROUP BY goal.teamid, goal.matchid
HAVING goal.teamid = 'GER'
SELECT matchid, mdate, COUNT(*) AS num_goals
FROM game JOIN goal
ON game.id = goal.matchid
WHERE (team1 = 'GER' AND teamid = 'GER') OR (team2 = 'GER' AND teamid = 'GER')
GROUP BY 1,2
Q13.
-------------------
-- using a left join here because maybe there is one match that has no goals, so that there is no record in the 'goal' table
SELECT MIN(game.mdate), MIN(game.team1), SUM(CASE WHEN goal.teamid = game.team1 THEN 1 Else 0 END) AS score1, MIN(game.team2),
SUM(CASE WHEN goal.teamid = game.team2 THEN 1 ELSE 0 END) AS score2
FROM game LEFT JOIN goal ON (game.id = goal.matchid)
GROUP BY game.id
ORDER BY game.mdate, goal.matchid, game.team1, game.team2