SQLZOO习题详解(09)——The JOIN operation

Posted 谷哥的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLZOO习题详解(09)——The JOIN operation相关的知识,希望对你有一定的参考价值。


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

数据表

teacher表如下:
在这里插入图片描述
dept表如下:
在这里插入图片描述

链接地址

https://napier.sqlzoo.net/wiki/Using_Null

SQL练习

01、查询所属院系为空的老师的名字

SELECT name FROM teacher WHERE dept IS NULL

02、请查询老师姓名及其所属院系的名称

SELECT teacher.name, dept.name FROM teacher INNER JOIN dept ON teacher.dept=dept.id

03、请查询老师姓名及其所属院系的名称,如果某老师不属于任何院系则将其对应院系设置为null

SELECT teacher.name, dept.name FROM teacher LEFT JOIN dept ON teacher.dept = dept.id

04、查询所有的院系及其所辖教师姓名,如果某院系没有任何老师则将其对应教师设置为null

SELECT teacher.name, dept.name FROM teacher RIGHT JOIN dept ON teacher.dept = dept.id

05、查询教师名字及其mobile号码,若某教师无mobile号码则将其设置为07986 444 2266


SELECT name, COALESCE(mobile,'07986 444 2266') FROM teacher

06、请查询老师姓名及其所属院系的名称,如果某老师不属于任何院系则将其对应院系设置为None

SELECT t.name, COALESCE(d.name, 'None') 
FROM teacher AS t
LEFT JOIN dept AS d ON t.dept = d.id

07、请从teacher表中统计name的数量和mobile的数量

SELECT COUNT(name),COUNT(mobile) FROM teacher

在这里插入图片描述
08、请查询各院系的名称并统计其所辖教师的数量

SELECT d.name, COUNT(t.name)
FROM teacher AS t
RIGHT JOIN dept AS d ON t.dept=d.id
GROUP BY d.name

在这里插入图片描述
09、请查询老师姓名及其所属院系的名称。如果老师的所属院系编号为1或者2则将其所属院系名称设定为Sci,否则,将其所属院系名设定为Art

SELECT t.name,
	CASE 
		WHEN d.id IN (1, 2) THEN 'Sci'
		ELSE 'Art'
	END
FROM teacher t LEFT JOIN dept d ON t.dept = d.id

在这里插入图片描述
10、请查询老师姓名及其所属院系的名称。如果老师的所属院系编号为1或者2则将其所属院系名称设定为Sci,如果老师的所属院系编号为3则将其所属院系名称设定为Art;否则,将其所属院系名设定为None

SELECT t.name,
	CASE 
		WHEN d.id IN (1, 2) THEN 'Sci'
		WHEN d.id IN (3) THEN 'Art'
		ELSE 'None'
	END
FROM teacher AS t LEFT JOIN dept AS d ON t.dept = d.id

在这里插入图片描述

以上是关于SQLZOO习题详解(09)——The JOIN operation的主要内容,如果未能解决你的问题,请参考以下文章

SQLZOO习题详解(08)——The JOIN operation

SQLZOO习题详解(10)——Self join

SQL练习-SQLZOO SQLZOO:The JOIN operation

SQL练习-SQLZOO SQLZOO:The JOIN operation

SQLZOO习题详解(05)——SELECT within SELECT

SQLZOO习题详解(06)——SUM and COUNT