-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmore join.sql
More file actions
150 lines (129 loc) · 3.5 KB
/
more join.sql
File metadata and controls
150 lines (129 loc) · 3.5 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
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
Q1.
-------------------
SELECT id, title
FROM movie
WHERE yr=1962
Q2.
-------------------
SELECT yr
FROM movie
WHERE title = 'Citizen Kane'
Q3.
-------------------
SELECT id, title, yr
FROM movie
WHERE title LIKE 'Star Trek%'
ORDER BY yr
Q4.
-------------------
SELECT id
FROM actor
WHERE name = 'Glenn Close'
Q5.
-------------------
SELECT id
FROM movie
WHERE title = 'Casablanca'
Q6.
-------------------
SELECT name
FROM actor JOIN (SELECT actorid FROM casting
JOIN movie ON casting.movieid = movie.id
WHERE movie.title = 'Alien') C
ON actor.id = C.actorid
Q7.
------------------
SELECT name
FROM actor JOIN (SELECT actorid FROM casting
JOIN movie ON casting.movieid = movie.id
WHERE movie.title = 'Alien') C
ON actor.id = C.actorid
Q8.
-------------------
SELECT title
FROM movie JOIN (SELECT movieid FROM casting
JOIN actor ON casting.actorid = actor.id
WHERE actor.name = 'Harrison Ford') I
ON movie.id = I.movieid
Q9.
--------------------
SELECT title
FROM movie JOIN (SELECT movieid FROM casting
JOIN actor ON casting.actorid = actor.id
WHERE actor.name = 'Harrison Ford' AND casting.ord != 1) I
ON movie.id = I.movieid
Q10.
-------------------
SELECT movie.title, actor.name
FROM casting JOIN movie
ON casting.movieid = movie.id
JOIN actor ON casting.actorid = actor.id
WHERE movie.yr = 1962 AND casting.ord = 1
Q11.
-------------------
SELECT movie.yr, COUNT(DISTINCT movie.id) AS num_of_movie_year
FROM casting JOIN movie
ON casting.movieid = movie.id
JOIN actor ON casting.actorid = actor.id
WHERE actor.name = 'John Travolta'
GROUP BY movie.yr
HAVING num_of_movie_year > 2
-- List the film title and the leading actor for all of the films 'Julie Andrews' played in.
Q12.
------------------
SELECT movie.title, actor.name
FROM movie JOIN casting
ON movie.id = casting.movieid
JOIN actor ON casting.actorid = actor.id
WHERE movie.id IN
(SELECT casting.movieid
FROM casting JOIN actor
ON casting.actorid = actor.id
WHERE actor.name = 'Julie Andrews') AND casting.ord = 1
-- another answer(slightly modified)
SELECT title, name
FROM movie JOIN casting
ON (movie.id = casting.movieid AND casting.ord = 1)
JOIN actor ON casting.actorid = actor.id
WHERE movie.id IN
(SELECT movieid
FROM casting
WHERE actorid IN
(SELECT id
FROM actor
WHERE name = 'Julie Andrews'))
-- Obtain a list, in alphabetical order, of actors who've had at least 30 starring roles.
Q13.
-----------------
SELECT actor.name
FROM actor JOIN casting
ON actor.id = casting.actorid
WHERE casting.ord = 1
GROUP BY actor.name
HAVING COUNT(*) >= 30
-- List the films released in the year 1978 ordered by the number of actors in the cast, then by title.
Q14.
----------------
SELECT movie.title, COUNT(casting.actorid) AS num_of_actors
FROM movie JOIN casting
ON movie.id = casting.movieid
WHERE movie.yr = 1978
GROUP BY movie.title
ORDER BY num_of_actors DESC, movie.title
-- List all the people who have worked with 'Art Garfunkel'.
Q15.
-------------------
SELECT actor.name
FROM actor JOIN casting
ON actor.id = casting.actorid
WHERE casting.movieid IN
(SELECT movie.id
FROM movie JOIN casting
ON movie.id = casting.movieid
JOIN actor ON actor.id = casting.actorid
WHERE actor.name = 'Art Garfunkel') AND actor.name != 'Art Garfunkel'
-- added another correct query
SELECT DISTINCT name
FROM actor JOIN casting ON id=actorid
WHERE movieid IN (SELECT movieid FROM casting JOIN actor ON (actorid=id AND name='Art Garfunkel')) AND name != 'Art Garfunkel'
GROUP BY name