SQL练习六--More JOIN operations
movie
| Field name | Type | Notes |
|---|---|---|
| id | INTEGER | An arbitrary unique identifier |
| title | CHAR(70) | The name of the film - usually in the language of the first release. |
| yr | DECIMAL(4) | Year of first release. |
| director | INT | A reference to the actor table. |
| budget | INTEGER | How much the movie cost to make (in a variety of currencies unfortunately). |
| gross | INTEGER | How much the movie made at the box office. |
example of Movie
| id | title | yr | director | budget | gross |
|---|---|---|---|---|---|
| 10003 | "Crocodile" Dundee II | 1988 | 38 | 15800000 | 239606210 |
| 10004 | 'Til There Was You | 1997 | 49 | 10000000 |
actor
| Field name | Type | Notes |
|---|---|---|
| id | INTEGER | An arbitrary unique identifier |
| name | CHAR(36) | The name of the actor (the term actor is used to refer to both male and female thesps.) |
example of actor
| id | name |
|---|---|
| 20 | Paul Hogan |
| 50 | Jeanne Tripplehorn |
casting
| Field name | Type | Notes |
|---|---|---|
| movieid | INTEGER | A reference to the movie table. |
| actorid | INTEGER | A reference to the actor table. |
| ord | INTEGER | The ordinal position of the actor in the cast list. The
star of the movie will have ord value 1 the co-star will have value 2, ... |
example of casting
| movieid | actorid | ord |
|---|---|---|
| 10003 | 20 | 4 |
| 10004 | 50 | 1 |
1、1962 movies(1962年电影)
List the films where the yr is 1962 [Show id, title]
获取1962年上映的电影id和名称。
SELECT id, title
FROM movie
WHERE yr=1962;
2、When was Citizen Kane released?(公民凯恩什么时候上映的)
Give year of 'Citizen Kane'.
获取《公民凯恩》上映的年份。
select yr
from movie
where title='Citizen Kane';
3、Star Trek movies(星际迷航系列电影)
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.
获取《星际迷航》系列的id,电影名称,上映年份;按照年份生序排名。
select id,title,yr
from movie
where title LIKE'%Star Trek%'
order by yr;
4、id for actor Glenn Close(演员Glenn Close的id)
What id number does the actor 'Glenn Close' have?
select id
from actor
where name='Glenn Close';
5、id for Casablanca(《卡萨布兰卡》电影的id)
What is the id of the film 'Casablanca'
select id
from movie
where title='Casablanca';
6、Cast list for Casablanca(《卡萨布兰卡》的演员表)
Obtain the cast list for 'Casablanca'.
The cast list is the names of the actors who were in the movie.
Use movieid=11768, (or whatever value you got from the previous question)
select name from actor where id in(select actorid from casting where movieid=11768);
ps:在不知道《卡萨布兰卡》电影id的前提下,还需要用select in select查询moviedid
select name from actor where id in(select actorid from casting where movieid=(select id from movie where title='Casablanca'));
7、Alien cast list(《异形》演员表)
Obtain the cast list for the film 'Alien'
select name
from actor
where id in(select actorid from casting where movieid=(select id from movie where title='Alien'));
8、Harrison Ford movies(Harrison Ford出演的电影名称)
List the films in which 'Harrison Ford' has appeared
select title from movie
left join casting
on movie.id=casting.movieid
where actorid =(select id from actor where name='Harrison Ford');
9、Harrison Ford as a supporting actor(Harrison Ford是配角的电影名称)
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 movie
left join casting
on movie.id=casting.movieid
where actorid =(select id from actor where name='Harrison Ford')and ord>1;
10、Lead actors in 1962 movies(获取1962年,主演演员的姓名,出演电影名称)
List the films together with the leading star for all 1962 films.
select movie.title,actor.name from movie
left join casting
on movie.id=casting.movieid
left join actor
on casting.actorid=actor.id
where ord=1 and yr=1962;
解答思路:本次考察的是多表连接。
11、Busy years for Rock Hudson(Rock Hudson的大热年)
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.
select yr,count(title) from movie
left join casting
on casting.movieid=movie.id
left join actor
on casting.actorid=actor.id
where actor.name='Rock Hudson'
group by yr
having count(title)>2;
解题思路:️多表连接;️having+聚合函数。
12、Lead actor in Julie Andrews movies(获取Julie Andrews出演的电影名称以及主演名称)
List the film title and the leading actor for all of the films 'Julie Andrews' played in.
Julie Andrews starred in the 1980 remake of Little Miss Marker and not the original(1934).
Title is not a unique field, create a table of IDs in your subquery
select movie.title,actor.name
from movie
left join casting
on casting.movieid=movie.id
left 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')) and casting.ord=1;
解题思路:子查询
13、Actors with 15 leading roles(按照字母排序获取至少担任过15个主演的演员名称)
Obtain a list, in alphabetical order, of actors who've had at least 15 starring roles.
select actor.name
from actor
join casting
on actor.id=casting.actorid
where casting.ord=1
group by 1
having count(actor.name)>=15
order by 1;
解题思路:聚合函数和having的运用。
14、List the films released in the year 1978 ordered by the number of actors in the cast, then by title.(获取1978年上映的电影名称,按照演员个数倒序,然后是电影名称顺序)
select movie.title,count(casting.actorid)
from movie
join casting
on movie.id=casting.movieid
where movie.yr=1978
group by 1
order by 2 desc,1;
解题思路:join连接movie和casting两个表
15、List all the people who have worked with 'Art Garfunkel'.(列出所有和Art Garfunkel合作的演员姓名)
select DISTINCT(name) from actor
join casting
on actor.id=casting.actorid
where movieid in (select movieid from casting join actor on actor.id=casting.actorid where name='Art Garfunkel') and name!='Art Garfunkel';
解题思路:️合作的演员姓名要排除掉Art Garfunkel自己本身️获取Art Garfunkel出演的电影id,嵌套select子查询。
SQL练习六--More JOIN operations的更多相关文章
- [SQL]SQL语言入门级教材_跟我学SQL(六)
跟我学SQL:(一)数据查询 且不说你是否正在从事编程方面的工作或者不打算学习SQL,可事实上几乎每一位开发者最终都会遭遇它.你多半还用不着负责创建和维持某个,但你怎么着也该知道以下的一些有关的SQL ...
- mysql sql left right inner join区别及效率比较
一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式
当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...
- sql表连接left join,right join,inner join三者之间的区别
sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL) ...
- 【转】图解SQL的各种连接join
原帖地址:http://www.nowamagic.net/librarys/veda/detail/936 图解SQL的各种连接join 让你对SQL的连接一目了然 在 2011年12月22日 那天 ...
- SQL点滴2—重温sql语句中的join操作
原文:SQL点滴2-重温sql语句中的join操作 1.join语句 Sql join语句用来合并两个或多个表中的记录.ANSI标准SQL语句中有四种JOIN:INNER,OUTER,LEFTER,R ...
- SQL Server中INNER JOIN与子查询IN的性能测试
这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...
- SQL语句中 INNER JOIN的用法!
一.SQL语句中 INNER JOIN的用法? 1.INNER JOIN的作用? 可以在两个或者更多的表中获取结果,得出一张新表. [隐式内连接] 表一 car 购物车 表二 user 用户 发现 ...
- SQL UPDATE with INNER JOIN
mysql - SQL UPDATE with INNER JOIN - Stack Overflowhttps://stackoverflow.com/questions/14491042/sql- ...
随机推荐
- ucore lab1 操作系统启动过程 学习笔记
开头赞美THU给我们提供了这么棒的资源.难是真的难,好也是真的好.这种广查资料,反复推敲,反复思考从通电后第一条代码搞起来理顺一个操作系统源码的感觉是真的爽. 1. 操作系统镜像文件ucore.img ...
- PyScript:让Python在HTML中运行
大家好,我是DD,已经是封闭在家的第51天了! 最近一直在更新Java新特性和IDEA Tips两个专栏,其他方向内容的动态关注少了.昨天天晚上刷推的时候,瞄到了这个神奇的东西,觉得挺cool的,拿出 ...
- 好客租房3-React的基本使用
2.1React的安装 安装命令:npm i react react-dom react 包是核心,提供创建元素,组件等功能 react-dom包提供DOM相关功能等 2.2React的使用 1引入r ...
- 深入解读SQL的聚集函数
摘要:本文从基本聚集操作入手,介绍常用的SQL语法,以及一些扩展的聚集功能,同时会讲到在GaussDB(DWS)里聚集相关的一些优化思路. 本文分享自华为云社区<GaussDB(DWS) SQL ...
- spring-boot @Async注解 解决异步多线程入库的问题
前言在开发过程中,我们会遇到很多使用线程池的业务场景,例如定时任务使用的就是ScheduledThreadPoolExecutor.而有些时候使用线程池的场景就是会将一些可以进行异步操作的业务放在线程 ...
- 《HALCON数字图像处理》第六章笔记
目录 第六章 图像增强 图像增强的概念和分类 灰度变换 直方图处理 图像的平滑 图像的锐化 图像的彩色增强 我在Gitee上建了个仓库,会将学习书本的时候打的一些代码上传上去,笔记中所有代码都在仓库里 ...
- c++ 关于二分的STL 详解
一.解释 以前遇到二分的题目都是手动实现二分,不得不说错误比较多,关于返回值,关于区间的左闭右开等很容易出错,最近做题发现直接使用STL中的二分函数方便快捷还不会出错,不过对于没有接触过的同学,二分函 ...
- 腾讯云数据库TDSQL-大咖论道 | 基础软件的过去、现在、未来
近十年来,中国基础软件发展势头迅猛,市场前景看高,越来越多的企业也正在进行基础软件升级.那中国基础软件行业目前在国际市场上有什么优势,面临哪些困境,以及未来基础软件行业会如何发展呢?腾讯云数据库邀请沙 ...
- ngx_http_fastcgi_module 的那些事
是什么? 顾名思义,是Nginx用来处理FastCGI的模块.FastCGI是什么?这个以后再讲,可以说的是现在LNMP架构里面,PHP一般是以PHP-CGI的形式在运行,它就是一种FastCGI,我 ...
- Camunda如何适配国产数据库达梦
前言 camunda流程引擎官方支持的数据库有:MySQL .MariaDB .Oracle .DB2 .PostgreSQL .SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数 ...