返回顶部 底部

sqlzoo练习系列(十三)——NULL值之老师和学系

 【Tips】

  • sqlzoo官网链接:https://sqlzoo.net/wiki/SQL_Tutorial/zh
  • 每个系列开头介绍所用表及其信息
  • 每道题均测试通过,含有题目描述、代码和结果
  • 题目为自己简写,最好在官网查看具体题目
  • 部分测试结果不完整,仅为一部分截图

NULL值之老师和学系练习链接:https://sqlzoo.net/wiki/Using_Null/zh

所用的表teacher老师,dept学系

     


 

1.列出学系department是NULL值的老师

SELECT teacher.name
FROM teacher LEFT JOIN dept
ON teacher.dept=dept.id
WHERE dept.name IS NULL

2.INNER JOIN的使用

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

3.使用不同的JON(外连接)列出全部老师

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

4.使用外连接,列出全部学系 

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

5.列出教师名字和电话,如果没有电话显示07986 444 2266

  • COALESCE返回第一个非空值,若全为空,返回NULL
SELECT name,COALESCE(mobile,'07986 444 2266')
FROM teacher
--若mobile为空,返回'07986 444 2266'

6.显示教师name和department name,如果没有department的话显示None

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

7.使用COUNT算老师和流动电话数目

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

8.使用COUNT和GROUP BY dept.name显示每一学系的老师数目,使用RIGHT JOIN

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

9.用CASE 。如果这个老师在dept1或dept2,则“Sci”,否则Art

SELECT name,
CASE WHEN dept=1 OR dept=2 THEN 'Sci'
ELSE 'Art' END
FROM teacher

10.Use CASE to show the name of each teacher followed by 'Sci' if the teacher is in dept 1 or 2, show 'Art' if the teacher's dept is 3 and 'None' otherwise

SELECT name,
CASE WHEN dept=1 OR dept=2 THEN 'Sci'
     WHEN dept=3 THEN 'Art' 
     ELSE 'None' END
FROM teacher

posted @ 2020-10-28 13:08  tuzinn  阅读(310)  评论(0编辑  收藏  举报