SQLZOO练习-Part 8:Using Null

本教程的第八部分关注在SQL中如何处理NULL。包括列出无部门的教师、不同JOIN类型的用法、COALESCE函数的应用以及CASE语句在区分教师部门属性中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Part 8:Using Null

teacher
iddeptnamephonemobile
1011Shrivell275307986 555 1234
1021Throd275407122 555 1920
1031Splint2293
104Spiregrain3287
1052Cutflower321207996 555 6574
106Deadyawn3345
...
dept
idname
1Computing
2Design
3Engineering
...

1. List the teachers who have NULL for their department.

SELECT name
FROM teacher
WHERE dept IS NULL

2. Note the INNER JOIN misses the teachers with no department and the departments with no teacher.

SELECT teacher.name AS Teacher, dept.name AS Department
FROM teacher INNER JOIN dept ON (teacher.dept=dept.id)
WHERE teacher.name IS NOT NULL  OR  teacher.dept IS NOT NULL

3. Use a different JOIN so that all teachers are listed.(列出所有老师的名字及所属部门)

SELECT teacher.name AS Teacher, dept.name AS Department
FROM teacher LEFT JOIN dept ON (teacher.dept=dept.id)

4. Use a different JOIN so that all departments are listed.

SELECT teacher.name AS Teacher, dept.name AS Department
FROM teacher RIGHT JOIN dept ON (teacher.dept=dept.id)

5. Use COALESCE to print the mobile number. Use the number '07986 444 2266' if there is no number given. Show teacher name and mobile number or '07986 444 2266'.

SELECT teacher.name AS Teacher, 
COALESCE(teacher.mobile,'07986 444 2266') AS TEL
FROM teacher

6. Use the COALESCE function and a LEFT JOIN to print the teacher name and department name. Use the string 'None' where there is no department.

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

7. Use COUNT to show the number of teachers and the number of mobile phones.

SELECT COUNT(teacher.name) AS TeacherNum, COUNT(teacher.mobile) AS MobileNum
FROM teacher

8. Use COUNT and GROUP BY dept.name to show each department and the number of staff. Use a RIGHT JOIN to ensure that the Engineering department is listed.

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

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

SELECT teacher.name AS Teacher, 
CASE WHEN teacher.dept=1 THEN 'Sci'
     WHEN teacher.dept=2 THEN 'Sci'
     ELSE 'Art' END 
AS Tpye
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 teacher.name AS Teacher, 
CASE WHEN teacher.dept=1 OR teacher.dept=2 THEN 'Sci'
     WHEN teacher.dept=3 THEN 'Art'
     ELSE 'None' END 
AS Tpye
FROM teacher

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值