-
Notifications
You must be signed in to change notification settings - Fork 0
/
more_join.sql
170 lines (149 loc) · 3.53 KB
/
more_join.sql
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
-- TUTORIAL
-- 1. 1962 movies
SELECT id, title
FROM movie
WHERE yr = 1962;
-- 2. When was Citizen Kane released?
SELECT yr
FROM movie
WHERE title = 'CItizen Kane';
-- 3. Star Trek movies
SELECT id, title, yr
FROM movie
WHERE title LIKE '%Star Trek%'
ORDER BY yr;
-- 4. id for actor Glenn Close
SELECT id
FROM actor
WHERE name = 'Glenn Close';
-- 5. id for Casablanca
SELECT id
FROM movie
WHERE title = 'Casablanca';
-- 6. Cast list for Casablanca
SELECT actor.name
FROM actor
INNER JOIN casting
ON actor.id = casting.actorid
WHERE casting.movieid = '11768';
-- 7. Alien cast list
SELECT actor.name
FROM actor
INNER JOIN casting
ON actor.id = casting.actorid
WHERE casting.movieid =
(SELECT id
FROM movie
WHERE title = 'Alien');
-- 8. Harrison Ford movies
SELECT movie.title
FROM movie
INNER JOIN casting
ON movie.id = casting.movieid
WHERE casting.actorid =
(SELECT id
FROM actor
WHERE name = 'Harrison Ford');
-- 9. Harrison Ford as a supporting actor
SELECT movie.title
FROM movie
INNER JOIN casting
ON movie.id = casting.movieid
WHERE casting.actorid =
(SELECT id
FROM actor
WHERE name = 'Harrison Ford')
AND casting.ord <> 1;
-- 10. Lead actors in 1962 movies
SELECT movie.title, actor.name
FROM movie
INNER JOIN casting
ON movie.id = casting.movieid
INNER JOIN actor
ON actor.id = casting.actorid
WHERE movie.yr = 1962 and casting.ord = 1;
-- 11. Busy years for Rock Hudson
SELECT movie.yr, COUNT(movie.title)
FROM movie
INNER JOIN casting
ON movie.id = casting.movieid
INNER JOIN actor
ON casting.actorid = actor.id
WHERE actor.name = 'Rock Hudson'
GROUP BY yr
HAVING COUNT(movie.title) > 2;
-- 12. Lead actor in Julie Andrews movies
SELECT movie.title, actor.name
FROM movie
INNER JOIN casting
ON movie.id = casting.movieid
INNER JOIN actor
ON actor.id = casting.actorid
WHERE movie.id IN
(SELECT casting.movieid
FROM casting
WHERE casting.actorid =
(SELECT id
FROM actor
WHERE name = 'Julie Andrews'))
AND casting.ord = 1;
-- 13. Actors with 15 leading roles
SELECT actor.name
FROM actor
INNER JOIN casting
ON actor.id = casting.actorid
WHERE casting.ord = 1
GROUP BY actor.name
HAVING COUNT(casting.ord) >= 15
ORDER BY actor.name;
-- 14. Films released in the year 1978
SELECT movie.title, COUNT(casting.actorid) AS Cast_Count
FROM movie
INNER JOIN casting
ON movie.id = casting.movieid
WHERE movie.yr = 1978
GROUP BY movie.title
ORDER BY Cast_Count DESC, movie.title;
-- 15. People who have worked with 'Art Garfunkel'.
SELECT actor.name
FROM actor
INNER JOIN casting
ON actor.id = casting.actorid
WHERE casting.movieid IN
(SELECT casting.movieid
FROM casting
WHERE casting.actorid =
(SELECT actor.id
FROM actor
WHERE actor.name = 'Art Garfunkel'))
AND actor.name <> 'Art Garfunkel';
-- QUIZ
-- 1. List the unfortunate directors of the movies which have caused financial loses (gross < budget)
SELECT name
FROM actor
INNER JOIN movie
ON actor.id = director
WHERE gross < budget;
-- 2. Select correct example of JOINing three tables
SELECT *
FROM actor
INNER JOIN casting
ON actor.id = actorid
INNER JOIN movie
ON movie.id = movieid;
-- 3. Show the list of actors called 'John' by order of number of movies in which they acted
SELECT name, COUNT(movieid)
FROM casting
INNER JOIN actor
ON actorid=actor.id
WHERE name LIKE 'John %'
GROUP BY name
ORDER BY 2 DESC;
-- 5. List all the actors that starred in movies directed by Ridley Scott who has id 351
SELECT name
FROM movie
INNER JOIN casting
ON movie.id = movieid
INNER JOIN actor
ON actor.id = actorid
WHERE ord = 1 AND director = 351;