自学SQL网题解

  • 自学SQL网(6-12课题解)
    • SQL Lesson 6: 用JOINs进行多表联合查询
    • SQL Lesson 7: 外连接(OUTER JOINs)
    • SQL Lesson 8: 关于特殊关键字 NULLs
    • SQL Lesson 9: 在查询中使用表达式
    • SQL Lesson 10: 在查询中进行统计I (Pt. 1)
    • SQL Lesson 11: 在查询中进行统计II (Pt. 2)
    • SQL Lesson 12: 查询执行顺序

自学SQL网(6-12课题解)

本文章尽量用简洁的代码去完成题目要求,话不多说,上代码。

SQL Lesson 6: 用JOINs进行多表联合查询

1.找到所有电影的国内Domestic_sales和国际销售额

SELECT * FROM movies
JOIN boxoffice
ON movies.id=boxoffice.movie_id;

2.找到所有国际销售额比国内销售大的电影

SELECT * FROM movies
join boxoffice
on movies.id=boxoffice.movie_id
where Domestic_sales <International_sales;

3.找出所有电影按市场占有率rating倒序排列

SELECT * FROM movies
join boxoffice
on movies.id=boxoffice.movie_id;

4.每部电影按国际销售额比较,排名最靠前的导演是谁,线上销量多少

SELECT Director,International_sales FROM movies
join boxoffice
on movies.id=boxoffice.movie_id
order by International_sales desc
limit 1;

SQL Lesson 7: 外连接(OUTER JOINs)

1.找到所有有雇员的办公室(buildings)名字

SELECT distinct Building_name FROM employees
left join  Buildings
on employees.Building=Buildings.Building_name
where Building;

2.找到所有办公室和他们的最大容量

SELECT distinct Building_name,Capacity FROM  Buildings;

3.找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT)

SELECT distinct role,Building_name FROM Buildings
left join Employees
on Buildings.Building_name = Employees.    Building;

4.找到所有有雇员的办公室(buildings)和对应的容量

SELECT  distinct Building_name,Capacity FROM Buildings
left join Employees
on Buildings.Building_name = Employees.    Building
where Building = 'null'; //=where Building

SQL Lesson 8: 关于特殊关键字 NULLs

1.找到雇员里还没有分配办公室的(列出名字和角色就可以)

SELECT Role,Name FROM employees
where Building is NULL;

2.找到还没有雇员的办公室

SELECT DISTINCT Building_name FROM Buildings
left join employees
on employees.Building =Buildings.Building_name
where name is NULL;

SQL Lesson 9: 在查询中使用表达式

1.列出所有的电影ID,名字和销售总额(以百万美元为单位计算)

SELECT Id,Title,(Domestic_sales+International_sales)/1000000 as sum FROM movies
left join Boxoffice
on Boxoffice.Movie_id = movies.Id;

2.列出所有的电影ID,名字和市场指数(Rating的10倍为市场指数)

SELECT Id,Title,rating*10 as sum FROM movies
left join Boxoffice
on Boxoffice.Movie_id = movies.Id;

3.列出所有偶数年份的电影,需要电影ID,名字和年份

SELECT Id,Title,year FROM movies
left join Boxoffice
on Boxoffice.Movie_id = movies.Id
where year %2=0;

4.John Lasseter导演的每部电影每分钟值多少钱,告诉我最高的3个电影名和价值就可以

SELECT Title,(Domestic_sales+International_sales)/Length_minutes as value FROM movies
left join Boxoffice
on Boxoffice.Movie_id = movies.Id
where director = 'John Lasseter'
order by value desc
limit 3;

5.电影名最长的3部电影和他们的总销量是多少

SELECT title,length(title),(Domestic_sales+International_sales) as value FROM movies
left join Boxoffice
on Boxoffice.Movie_id = movies.Id
order by length(title) desc
limit 3 offset 0;

SQL Lesson 10: 在查询中进行统计I (Pt. 1)

1.找出就职年份最高的雇员(列出雇员名字+年份)

SELECT name,Years_employed FROM employees
order by Years_employed desc
limit 1

2.按角色(Role)统计一下每个角色的平均就职年份

SELECT role,avg(Years_employed) FROM employees
group by role;

3.按办公室名字总计一下就职年份总和

SELECT building,sum(Years_employed) FROM employees
group by building;

4.每栋办公室按人数排名,不要统计无办公室的雇员

select Building,count(Building) from Employees
where Building is not null
group by Building;

5.就职1,3,5,7年的人分别占总人数的百分比率是多少(给出年份和比率"50%" 记为 50)

SELECT Years_employed,round(count(*)*1.0*100/(select count(*) from employees)) as rate
FROM employees
where Years_employed in(1,3,5,7)
group by Years_employed

SQL Lesson 11: 在查询中进行统计II (Pt. 2)

1.统计一下Artist角色的雇员数量

SELECT count(*) FROM employees
where role = 'Artist';

2.按角色统计一下每个角色的雇员数量

select role,count(*) from employees
group by role;

3.算出Engineer角色的就职年份总计

SELECT SUM(Years_employed) FROM employees
where role= 'Engineer';

4.按角色分组算出每个角色按有办公室和没办公室的统计人数(列出角色,数量,有无办公室,注意一个角色如果部分有办公室,部分没有需分开统计)

SELECT count(*) as count,Role,building is not null
FROM employees
group by Role,building is not null

5.按角色和就职年份统计人数,年份按0-3,3-6,6-9这种阶梯分组,最后按角色+阶梯分组排序

SELECT role,count(*),Years_employed/3
FROM employees
group by role,Years_employed/3 ;

SQL Lesson 12: 查询执行顺序

1.统计出每一个导演的电影数量(列出导演名字和数量)

SELECT Director,count(*) FROM movies
join boxoffice
on movies.id  = boxoffice.Movie_id
group by Director;

2.统计一下每个导演的销售总额(列出导演名字和销售总额)

SELECT Director,SUM(Domestic_sales+International_sales) FROM movies
join boxoffice
on movies.id  = boxoffice.Movie_id
group by Director;

3.按导演分组计算销售总额,求出平均销售额冠军(统计结果过滤掉只有单部电影的导演,列出导演名,总销量,电影数量,平均销量)

SELECT director,count(*),SUM(Domestic_sales+International_sales),SUM(Domestic_sales+International_sales)/count(*) as avg
FROM movies
left join boxoffice
on movies.id = boxoffice .movie_id
group by director
having count(*) > 1
order by avg desc
limit 1;

4.找出每部电影和单部电影销售冠军之间的销售差,列出电影名,销售额差额

SELECT title, (select MAX(Domestic_sales+International_sales)
from Boxoffice) - SUM(Domestic_sales+International_sales) FROM movies
inner join Boxoffice
on movies.ID = Boxoffice.movie_id
group by title;

生命中曾经有过的所有灿烂,终究都需要用寂寞来偿还。
自学SQL终结

自学SQL网题解(6-12课题解)相关推荐

  1. 自学SQL网题解(0-5课题解)

    自学SQL网题解 自学SQL网(0-5课题解) SQL Lesson 0: 让我给SQL做个自我介绍 SQL Lesson 1: SELECT 查询 101 SQL Lesson 2: 条件查询 (c ...

  2. 自学SQL网习题题解:0-12(带内容解析!)

    自学SQL网习题题解:0-12(带内容解析!) 原创:丶无殇  2022-07-17 这是一个自学SQL的中文网站,基础内容质量高,语言简洁明了,能够快速学习并提升技能. 网址:http://xues ...

  3. 自学SQL网 难题笔记

    自学SQL网 难题笔记 自学SQL网 第十一课 Part2 [难题]按角色分组算出每个角色按有办公室和没办公室的统计人数(列出角色,数量,有无办公室,注意一个角色如果部分有办公室,部分没有需分开统计) ...

  4. 自学SQL网题库答案

    ###自学SQL网答案 leeson 1 [简单查询]找到所有电影的名称title SELECT title from movies [简单查询]找到所有电影的导演 select director f ...

  5. 可能是史上最适合入门SQL语句的教程——自学SQL网学习笔记

    自学SQL网Note 学习网址:http://xuesql.cn/ 表格.题目和知识点采集于自学SQL网,这个网站提供直接练习SQL的页面,免去了安装MySQL和导入表格的繁琐步骤,非常推荐初学者学习 ...

  6. 自学SQL网之学习笔记(题目+答案)

    最近在重新学习数据库SQL,这里分享一下在使用<自学SQL网>上自学期间所涉及的练习题. 重要的事情要说三遍!仅供参考!仅供参考!仅供参考!!! 当然也悄悄种草一下这个网站练练手还是蛮不错 ...

  7. sql语言实践之自学SQL网(SQL Lesson12)

    sql语言实践之自学SQL网(SQL Lesson12) 这是一个目录 sql语言实践之自学SQL网(SQL Lesson12) SQL Lesson 12: 查询执行顺序 练习 do it - 请完 ...

  8. sql截取某个字段字符串后几位_自学SQL网教程之09-SQL Lesson 8: 关于特殊关键字 NULLs...

    SQL Lesson 8: 关于特殊关键字 NULLs 之前我们已经接触过NULL. 在数据库中,NULL表达的是 "无"的概念,或者说没有东西.因为 NULL的存在,我们需要在编 ...

  9. 推荐一个学习SQL的网站-自学SQL网

    自学SQL网 自学SQL网 一个适合小白学SQL的网站,由浅入深的介绍所有有关 SQL 的知识, 每一个章节是一组相关的SQL知识点: 并且会配备一组动手练习任务. 这个网站特别适合学完某种知识就想马 ...

最新文章

  1. linux 创建/删除 swap交换分区
  2. 改变mysql的菜单栏的颜色_导航条——动态改变导航菜单的背景颜色
  3. 互联网晚报 | 3月21日 星期一 |​ 科大讯飞5亿成立科技新公司;新能源车企称采购宁德时代电池成本上涨两万元...
  4. php postgresql win,Windows PHP上的PostgreSQL问题
  5. 随想录(smp的一些注意事项)
  6. Mysql的去重distinct
  7. paip.中文 分词 -- 同义词大全整理
  8. python部落课程资源_python部落刷题宝学到的内置函数
  9. 详解安全测试工具:SAST、DAST、IAST、SCA的异同
  10. Golang代码注释规范及goland代码注释模板配置
  11. 数据库同步——中间数据库的实现方式
  12. 启动Elasticsearch时:[failed to obtain node locks]
  13. HTML+CSS鼠标悬停效果
  14. Mosaicking to Distill Knowledge Distillation from Out-of-Domain Data
  15. 2.Nacos 服务注册的原理
  16. c语言_调和级数不等式
  17. Cocos2d-x学习笔记(八)—— 粒子系统,场景切换,网格特效
  18. 蓝桥杯单片机第十三届第二场
  19. MySQL《多表连接操作2》
  20. location.href的几种用法

热门文章

  1. vi 编辑器进入后无法退出
  2. java集成支付宝支付接口
  3. Python数据分析 第一章 数据分析的概述
  4. python简单绘图
  5. python期末考试重点_Python期末复习笔记
  6. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解
  7. POP、OOP、IOP、AOP
  8. nba app android,NBA app官方版
  9. 【k8s金牌知识】k8s升级攻略
  10. php浮点转int少1,PHP中浮点数计算比较及取整不准确的解决方法