【SQLZOO答え】8.Using Null
SQL入門を勉強するため、友人にSQLの練習問題ないかと聞いたら、
【SQLZOO】というサイトを教えてもらいました。
ただし、問題を解いてるうちに、わからない問題に関して、クエリの答えがおらず、結果しか教えてくれないので、答えをアウトプットしようと思い、noteを始めました。
0.SQLZOO練習問題
1.NULL
List the teachers who have NULL for their department.
Why we cannot use =
You might think that the phrase dept=NULL would work here but it doesn't - you can use the phrase dept IS NULL
That's not a proper explanation.
select
name
from
teacher
where
dept is null;
2.INNER JOIN
Note the INNER JOIN misses the teachers with no department and the departments with no teacher.
select
teacher.name Teacher, dept.name Dept
from
teacher
inner join
dept
on (teacher.dept=dept.id);
3.LEFT JOIN
Use a different JOIN so that all teachers are listed.
select
t.name Teacher, d.name Dept
from
teacher t
left join
dept d
on t.dept=d.id
4.RIGHT JOIN
Use a different JOIN so that all departments are listed.
select
t.name Teacher, d.name Dept
from
teacher t
right join
dept d
on t.dept=d.id;
5.COALESCE
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
name, coalesce(mobile,'07986 444 2266')
from
teacher;
6.COALESCE LEFT JOIN
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,coalesce(dept.name,'None')
from teacher
left join
dept
on
teacher.dept=dept.id;
7.COUNT
Use COUNT to show the number of teachers and the number of mobile phones.
select
count(name), count(mobile)
from
teacher;
8.COUNT RIGHT JOIN
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.CASE WHEN
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
name,
case when dept=1 then 'Sci'
when dept=2 then 'Sci'
else 'Art' end
from
teacher;
10.CASE WHEN2
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 then 'Sci'
when dept=2 then 'Sci'
when dept=3 then 'Art'
else 'None' end
from
teacher
その他の答へ
0.SELECT basics
1.SELECT name
2.SELECT from World
3.SELECT from Nobel
4.SELECT within SELECT
5.SUM and COUNT
6.JOIN
7.More JOIN operations
8.Using Null
8+ Numeric Examples
9.Self join
10.Tutorial Quizzes
11.Tutorial Student Records
12.Tutorial DDL
※問題を攻略でき次第、随時更新いたします。
この記事が気に入ったらサポートをしてみませんか?