###自学SQL网答案
leeson 1
-
【简单查询】找到所有电影的名称
title
SELECT title from movies
-
【简单查询】找到所有电影的导演
select director from movies
-
【简单查询】找到所有电影的名称和导演
select title ,director from movies
-
【简单查询】找到所有电影的名称和上映年份
select title ,year from movies
-
【简单查询】找到所有电影的所有信息
select * from movies
-
【简单查询】找到所有电影的名称,Id和播放时长
select title ,id,length_minutes from movies
leeson 2
- 【简单条件】找到
id
为6的电影
select * from movies where id=6
- 【简单条件】找到在2000-2010年间
year
上映的电影
select * from movies where year between 2000 and 2010
- 【简单条件】找到不是在2000-2010年间
year
上映的电影
select * from movies where year not between 2000 and 2010
- 【简单条件】找到头5部电影
select * from movies where id<=5
- 【简单条件】找到2010(含)年之后的电影里片长小于两个小时的片子
select * from movies where year>=2010 and length_minutes<120
leeson 3
-
【复杂条件】找到所有
Toy Story
系列电影select * from movies where title like '%Toy Story%'
-
【复杂条件】找到所有
John Lasseter
导演的电影select * from movies where director like '%John Lasseter%'
-
【复杂条件】找到所有不是
John Lasseter
导演的电影select * from movies where director not like '%John Lasseter%'
-
【复杂条件】找到所有电影名为
"WALL-"
开头的电影select * from movies where title like 'WALL-%'
-
【复杂条件】有一部98年电影中文名《虫虫危机》请给我找出来
select * from movies where year = '1998'
leeson 4
- 【结果排序】按导演名
排重
列出所有电影(只显示导演),并按导演名正序排列
select distinct director from movies order by director
- 【结果排序】列出按上映年份
最新
上线的4部电影
select * from movies order by year desc limit 4
- 【结果排序】按电影名字母序
升序
排列,列出前5部电影
select * from movies order by title limit 5
- 【结果排序】按电影名字母序升序排列,列出上一题
之后
的5部电影
select * from movies order by title limit 5 offset 5
- 【结果排序】如果按片长排列,John Lasseter导演导过片长第3长的电影是哪部,列出名字即可 ✓
select title from movies where director = 'John Lasseter' order by length_minutes desc limit 1 offset 2
leeson 5
- 【复习】列出所有加拿大人的
Canadian
信息(包括所有字段)
select * from North_american_cities where Country = 'Canada'
-
【复习】列出所有在
Chicago
西部的城市,从西到东排序(包括所有字段)select * from North_american_cities where Longitude < -87.629798 order by Longitude
-
【复习】用人口数
population
排序,列出墨西哥Mexico
最大的2个城市(包括所有字段)select * from North_american_cities where Country ='Mexico' order by population desc limit 2
-
【复习】列出美国
United States
人口3-4位的两个城市和他们的人口(包括所有字段)
select * from North_american_cities where Country ='United States' order by population desc limit 2 offset 2
leeson 6
- 【联表】找到所有电影的国内
Domestic_sales
和国际销售额
select * from movies,Boxoffice where id=Movie_id
- 【联表】找到所有国际销售额比国内销售大的电影
select * from movies,Boxoffice where id = Movie_id and Domestic_sales < international_sales
-
【联表】找出所有电影按市场占有率
rating
倒序排列select * from movies, Boxoffice where id = Movie_id order by rating
-
【联表】每部电影按国际销售额比较,排名最靠前的导演是谁,国际销量多少
select director,international_sales from movies, Boxoffice where id =Movie_id order by international_sales desc limit 1
leeson 7
- 【复习】找到所有有雇员的办公室(
buildings
)名字
select distinct building_name from Employees left join buildings on building =building_name where building not null
- 【复习】找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(
DISTINCT
)
select distinct building_name,role from buildings left join Employees on Building = Building_name
- 【难题】找到所有有雇员的办公室(
buildings
)和对应的容量
select distinct Building ,Capacity from Employees left join buildings on building =building_name where building not null
leeson 8
- 【复习】找到雇员里还没有分配办公室的(列出名字和角色就可以)
select role,name from Employees left join Buildings on Building = Building_name where Building is null
- 【难题】找到还没有雇员的办公室
select distinct Building_name from
Buildings left join Employees
on Building = Building_name where name is NULL;
leeson 9
-
【计算】列出所有的电影ID,名字和销售总额(以百万美元为单位计算)
select id,title ,(Domestic_sales +International_sales)/1000000 as sum_sales from movies left join Boxoffice on id =Movie_id
-
【计算】列出所有的电影ID,名字和市场指数(
Rating
的10倍为市场指数)select id,title, (rating*10)as rating from Movies left join boxoffice on id=movie_id
-
【计算】列出所有偶数年份的电影,需要电影ID,名字和年份
select id,title,year from movies left join boxoffice on id=movie_id where year%2=0
-
【难题】John Lasseter导演的每部电影每分钟值多少钱,告诉我最高的3个电影名和价值就可以
select title,((Domestic_sales+international_sales)/length_minutes)as minutes_price from movies left join boxoffice on id=movie_id where director='John Lasseter' order by minutes_price desc limit 3
leeson 10
- 【统计】找出就职年份最高的雇员(列出雇员名字+年份)
select Name,max(Years_employed) from employees
-
【分组】按角色(
Role
)统计一下每个角色的平均就职年份select role,avg(years_employed) from employees group by role
-
【分组】按办公室名字总计一下就职年份总和
select building ,sum(Years_employed) from employees group by Building
- 【难题】每栋办公室按人数排名,不要统计无办公室的雇员
select Building,count(Building) from Employees
where Building is not null group by building
leeson 11
- 【统计】统计一下Artist角色的雇员数量
SELECT count(role) FROM employees where Role= 'Artist'
- 【分组】按角色统计一下每个角色的雇员数量
select role,count(role)as count from employees group by role
- 【分组】算出Engineer角色的就职年份总计
select sum(Years_employed) from employees where role='Engineer' group by role
- 【难题】按角色分组算出每个角色按有办公室和没办公室的统计人数(列出角色,数量,有无办公室,注意一个角色如果部分有办公室,部分没有需分开统计)
SELECT count(*) as count,Role,building is not null FROM employees group by Role,building is not null
leeson 12
- 【复习】统计出每一个导演的电影数量(列出导演名字和数量)
select director ,count(title) from movies group by director
-
【复习】统计一下每个导演的销售总额(列出导演名字和销售总额)
select director,sum(Domestic_sales+International_sales) from movies left join boxoffice on id=movie_id group by director
-
【难题】按导演分组计算销售总额,求出平均销售额冠军(统计结果过滤掉只有单部电影的导演,列出导演名,总销量,电影数量,平均销量)
select sum(Domestic_sales+International_sales)as sum_sales,director,count(title)as count,avg(Domestic_sales+International_sales)as avg_sales from movies left join boxoffice on id=movie_id group by director having count >1 order by avg_sales desc limit 1
-
【变态难】找出每部电影和单部电影销售冠军之间的销售差,列出电影名,销售额差额
select title, maxt.max_s-(Domestic_sales+International_sales)
from(SELECT *
FROM Movies m
left join Boxoffice b on m.Id = b.Movie_id)as mb
cross join(select sum(Domestic_sales+International_sales)as sum_sales from movies left join boxoffice on id=movie_id group by title order by sum_sales desc limit 1)
as maxt