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
SQL练习-SQLZOO SQLZOO:The JOIN operation
SQL练习-SQLZOO SQLZOO:The JOIN operation