美文网首页
SQL练习_6 | 8 | SQLZOO_20191021

SQL练习_6 | 8 | SQLZOO_20191021

作者: XDuan | 来源:发表于2020-02-10 00:33 被阅读0次

本系列刷题笔记主要用以记录刷SQLZOO的过程中的思路、个人答案以及陌生的或者新的知识点。

题目来源 - SQLZOO
SQLZOO中题目中文版本与英文版本略有差异,题目以英文版为准

相关文章
SQL练习_1 | 0,1,2 | SQLZOO_20191002
SQL练习_2 | 3 | SQLZOO_20191008
SQL练习_3 | 4,5 | SQLZOO_20191010
SQL练习_4 | 6 | SQLZOO_20191012
SQL练习_5 | 7 | SQLZOO_20191015

目录
8 Using Null
8+ Numeric Examples

8 Using Null

查询表格

查询表格_teacher, dept

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,
       dept.name
FROM teacher
  INNER JOIN dept ON (teacher.dept = dept.id)

3 Use a different JOIN so that all teachers are listed.

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

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

SELECT teacher.name,
       dept.name
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 name,
       COALESCE(mobile,'07986 444 2266')
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 a.name,
       COALESCE(b.name,'None')
FROM teacher a
  LEFT JOIN dept b ON a.dept = b.id

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

SELECT COUNT(DISTINCT name),
       COUNT(DISTINCT mobile)
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 b.name,
       COUNT(DISTINCT a.name)
FROM teacher a
  RIGHT JOIN dept b ON a.dept = b.id
GROUP BY b.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 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

8+ Numeric Examples

查询表格

查询表格_nss(National Student Survey 2012)

1 Show the the percentage who STRONGLY AGREE

The example shows the number who responded for:
*question 1
*at 'Edinburgh Napier University'
*studying '(8) Computer Science'

SELECT A_STRONGLY_AGREE
FROM nss
WHERE question = 'Q01'
AND   institution = 'Edinburgh Napier University'
AND   subject = '(8) Computer Science'

2 Show the institution and subject where the score is at least 100 for question 15.

SELECT institution,
       subject
FROM nss
WHERE question = 'Q15'
AND   score >= 100

3 Show the institution and score where the score for '(8) Computer Science' is less than 50 for question 'Q15'

SELECT institution,
       score
FROM nss
WHERE question = 'Q15'
AND   score < 50
AND   subject = '(8) Computer Science'

4 Show the subject and total number of students who responded to question 22 for each of the subjects '(8) Computer Science' and '(H) Creative Arts and Design'.

SELECT subject,
       SUM(response)
FROM nss
WHERE question = 'Q22'
AND   (subject = '(H) Creative Arts and Design' OR subject = '(8) Computer Science')
GROUP BY subject

5 Show the subject and total number of students who A_STRONGLY_AGREE to question 22 for each of the subjects '(8) Computer Science' and '(H) Creative Arts and Design'.

SELECT subject,sum(response*(A_STRONGLY_AGREE/100))
  FROM nss
 WHERE question='Q22'
AND (subject='(H) Creative Arts and Design'
   or subject='(8) Computer Science')
group by subject

6 Show the percentage of students who A_STRONGLY_AGREE to question 22 for the subject '(8) Computer Science' show the same figure for the subject '(H) Creative Arts and Design'.

Use the ROUND function to show the percentage without decimal places.

SELECT subject,
       ROUND(SUM(response*A_STRONGLY_AGREE) / SUM(response))
FROM nss
WHERE question = 'Q22'
AND   (subject = '(H) Creative Arts and Design' OR subject = '(8) Computer Science')
GROUP BY subject

7 Show the average scores for question 'Q22' for each institution that include 'Manchester' in the name.

The column score is a percentage - you must use the method outlined above to multiply the percentage by the response and divide by the total response. Give your answer rounded to the nearest whole number.

SELECT institution,
       ROUND(SUM(score*response) / SUM(response))
FROM nss
WHERE question = 'Q22'
AND   institution LIKE '%Manchester%'
GROUP BY institution
ORDER BY institution

8 Show the institution, the total sample size and the number of computing students for institutions in Manchester for 'Q01'.

在where后加 subject = '(8) Computer Science' 约束或者使用子查询均无法实现查处计算机学生数的要求

SELECT institution,
       SUM(sample),
       SUM(CASE WHEN subject = '(8) Computer Science' THEN sample ELSE NULL END)
FROM nss
WHERE question = 'Q01'
AND   (institution LIKE '%Manchester%')
GROUP BY institution

相关文章

  • SQL练习_6 | 8 | SQLZOO_20191021

    本系列刷题笔记主要用以记录刷SQLZOO的过程中的思路、个人答案以及陌生的或者新的知识点。 题目来源 - SQLZ...

  • 牛客网SQL实战练习——6~10

    牛客网SQL实战练习——6~10 声明:练习牛客网SQL实战题目,整理笔记。6.查找所有员工入职时候的薪水情况,给...

  • sql 练习(五)

    环境是mysql 练习数据见SQL:练习的前期准备 sql 练习(一)sql 练习(二)sql 练习(三)sql ...

  • 练习SQL利器,牛客网SQL实战题库,1~8题

    练习SQL利器,牛客网SQL实战题库,1~8题 牛客网SQL实战网址:https://www.nowcoder.c...

  • sql 练习(四)

    环境是mysql 练习数据见SQL:练习的前期准备 sql 练习(一)sql 练习(二)sql 练习(三)31、查...

  • sql 练习(三)

    环境是mysql 练习数据见SQL:练习的前期准备 sql 练习(一)sql 练习(二)21、查询成绩高于学号为“...

  • MySQL Operation

    sql语句练习sql练习2 MYSQL导入数据出现The MySQL server is running with...

  • SQL经典练习(1~6)

    今天开始作息下SQL相关的练习题,题目来源这里 首先是数据库的准备,按照题目要求,自己创建了名为text_dat...

  • MySQL 练习题

    01第一天20180703 【SQL练习】经典SQL练习题 02第二天20180704 sql语句练习50题(My...

  • SQL练习

    SQL练习-4张表 针对下面的4张表格进行SQL语句的练习。 image SQL练习-题目 查询001课程比002...

网友评论

      本文标题:SQL练习_6 | 8 | SQLZOO_20191021

      本文链接:https://www.haomeiwen.com/subject/fpdnxhtx.html