第7关 More JOIN operations - SQLZOO
练习 join
-- 1.List the films where the yr is 1962 [Show id, title]
-- 练习where
select id,title
from movie
where yr=1962
-- 2.Give year of 'Citizen Kane'.
-- 练习where
select yr
from movie
where title = 'Citizen Kane'
-- 3. List all of the Star Trek movies, include the id, title and yr (all of these movies include the words Star Trek in the title). Order results by year.
-- 练习 like order by
select id,title,yr
from movie
where title like '%Star Trek%'
order by yr
-- 4.What id number does the actor 'Glenn Close' have?
-- 练习 where
select id
from actor
where name = 'Glenn Close'
-- 5. What is the id of the film 'Casablanca'
-- 练习where
select id
from movie
where title = 'Casablanca'
-- 6. Obtain the cast list for 'Casablanca'.
--练习一表连多表
select name
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where title = 'Casablanca'
-- 7. Obtain the cast list for the film 'Alien'
--练习一表连多表
select name
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where title = 'Alien'
-- 8.List the films in which 'Harrison Ford' has appeared
-- 练习一表连多表
select title
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where name = 'Harrison Ford'
-- 9.List the films where 'Harrison Ford' has appeared - but not in the starring role. [Note: the ord field of casting gives the position of the actor. If ord=1 then this actor is in the starring role]
-- 练习一表连多表
select title
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where name = 'Harrison Ford'
and ord !=1
-- 10.List the films together with the leading star for all 1962 films.
-- 练习一表连多表
select title,name
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where yr = 1962
and ord =1
-- 11. Which were the busiest years for 'Rock Hudson', show the year and the number of movies he made each year for any year in which he made more than 2 movies.
-- 练习 join 和 group by having
select yr, count(title)
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where name = 'Rock Hudson'
group by yr
having count(title)>2
-- 12. List the film title and the leading actor for all of the films 'Julie Andrews' played in.
-- join 和 子查询联合用
select title, name
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where movieid in (
select movieid
from casting
join actor on actor.id = actorid
where name = 'Julie Andrews')
and ord = 1
-- 13.Obtain a list, in alphabetical order, of actors who've had at least 15 starring roles
-- 练习join on group by having order by
select name
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where ord =1
group by name
having count(movieid)>= 15
order by name
-- 14.List the films released in the year 1978 ordered by the number of actors in the cast, then by title.
-- 练习 join on group by order by
-- having是分组后过滤功能,
select title,count(name)
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where yr = '1978'
group by title
order by count(name) desc, title
-- 15. List all the people who have worked with 'Art Garfunkel'.
-- 注意排除'Art Garfunkel'本人。
select name
from casting
join actor on actor.id = actorid
join movie on movie.id = movieid
where movieid in (
select movieid
from casting
join actor on actor.id = actorid
where name = 'Art Garfunkel')
and name != 'Art Garfunkel'