前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sqlzoo练习14-using-null

sqlzoo练习14-using-null

作者头像
皮大大
发布2021-03-01 10:13:10
3050
发布2021-03-01 10:13:10
举报
文章被收录于专栏:机器学习/数据可视化

sqlzoo练习14-using NULL

本文中讲解的是当数据库的表中的数据存在缺失值NULL的时候,该如何进行处理。下面的数据含有两个表teacherdept

The school includes many departments. Most teachers work exclusively for a single department. Some teachers have no department.

using null

练习

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

找出dept为空的老师

代码语言:javascript
复制
select name
from teacher
where dept in NULL;   -- 注意不能使用dept=NULL
  1. Note the INNER JOIN misses the teachers with no department and the departments with no teacher.

inner join能够排除老师为空的系或者没有系的老师

代码语言:javascript
复制
select teacher.name, dept.name
from teacher
inner join dept on (teacher.dept=dept.id);
  1. Use a different JOIN so that all teachers are listed.
代码语言:javascript
复制
select teacher.name. dept.name
from teacher
full join dept on teacher.dept=dept.id
where teacher.name is not null;  -- 方法1
代码语言:javascript
复制
select teacher.name, dept.name
from teacher
left join dept on teacher.dept=detp.id;  -- 方法2
  1. Use a different JOIN so that all departments are listed.
代码语言:javascript
复制
-- 方法1
select teacher.name, dept.name
from dept
full join teacher on dept.id=teacher.dept
where dept.name is not null;

-- 方法2
select teacher.name, dept.name
from teacher
right join dept on teacher.dept=detp.id;
  1. 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’
代码语言:javascript
复制
select name, coalesce(mobile, '07986 444 2266')
from teacher
  1. 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.
代码语言:javascript
复制
select teacher.name, coalesce(dept.name, 'None')
from teacher
left join dept on teacher.dept=dept.id;
  1. Use COUNT to show the number of teachers and the number of mobile phones.
代码语言:javascript
复制
select count(name), count(mobile)
from teacher;
  1. 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.
代码语言:javascript
复制
select dept.name, count(teacher.name)
from teacher
right join dept on dept.id=teacher.dept
group by dept.name;
  1. Use CASE to show the name of each teacher followed by ‘Sci’ if the teacher is in dept 1 or 2 and ‘Art’ otherwise.
代码语言:javascript
复制
select teacher.name,
   case when (teacher.dept=1 or teacher.dept=2) then 'Sci'
   else 'Art' end
from teacher;
  1. 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.
代码语言:javascript
复制
select teacher.name,
  case when teacher.dept=1 or teacher.dept=2 then 'Sci'
       when teacher.dept=3 then 'Art'
  else 'None' end
from teacher

About coalesce函数

COALESCE takes any number of arguments and returns the first value that is not null.

笔记:取第一个不是NULL值的数据

About case function

case表达式的两种写法

代码语言:javascript
复制
case sex   -- 1. 简单表达式
   when '1' then '男'
   when '2' then '女'
else 'other' end


case when sex='1' then '男'  -- 2. 搜索表达式
     when sex='2' then '女'
else 'other' end
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-1-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sqlzoo练习14-using NULL
  • 练习
  • About coalesce函数
  • About case function
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档