1 SUM and COUNT

1 显示世界总人口

SELECT SUM(population)
FROM world

2 列出所有的洲份, 每个只有一次。

SELECT DISTINCT continent
FROM world

3 找出非洲(Africa)的GDP总和。

SELECT SUM(gdp)
FROM world
WHERE continent = 'Africa'

4 有多少个国家具有至少百万(1000000)的面积。

SELECT COUNT(*)
FROM world
WHERE area >= 1000000

5 (‘France’,’Germany’,’Spain’)(“法国”,“德国”,“西班牙”)的总人口是多少?

SELECT SUM(population)
FROM world
WHERE name IN ('France','Germany','Spain')

6 对于每一个洲份,显示洲份和国家的数量。

SELECT continent,COUNT(*)
FROM world
GROUP BY continent 

7 对于每一个洲份,显示洲份和至少有1000万人(10,000,000)口国家的数目。

SELECT continent,COUNT(*)
FROM world
WHERE population > 10000000
GROUP BY continent

8 列出有至少100百万(1亿)(100,000,000)人口的洲份。

SELECT continent
FROM world
GROUP BY continent
HAVING SUM(population) > 100000000


2 The nobel table can be used to practice more SUM and COUNT functions.

1 找出总共有多少个奖颁发了。

SELECT COUNT(*)
FROM nobel 

2 列出每一个奖项(subject), 只列一次

SELECT DISTINCT subject
FROM nobel 

3 找出物理奖的总颁发次数。

SELECT COUNT(subject)
FROM nobel
WHERE subject = 'Physics'

4 对每一个奖项(Subject),列出颁发数目。

SELECT subject,COUNT(*)
FROM nobel
GROUP BY subject 

5 对每一个奖项(Subject),列出首次颁发的年份。

SELECT subject,yr
FROM nobel n1
WHERE yr <= (
SELECT MIN(yr) FROM nobel n2
WHERE n1.subject = n2.subject)
GROUP BY subject,yr

6 对每一个奖项(Subject),列出2000年颁发的数目。

SELECT subject,COUNT(*)
FROM nobel
WHERE yr = 2000
GROUP BY subject

7 对每一个奖项(Subject),列出有多少个不同的得奖者

SELECT subject,COUNT(DISTINCT winner)
FROM nobel
GROUP BY subject 

这个题目关键在于列出不同的获奖者数量,由于可能存在一个人多次获得同一奖项,所以需要使用DISTINCT 去重。

8 对每一个奖项(Subject),列出有多少年曾颁发过。

SELECT subject,COUNT(DISTINCT yr)
FROM nobel
GROUP BY subject 

9 列出哪年曾同年有3个物理奖Physics得奖者。

SELECT yr
FROM nobel
WHERE subject = 'Physics'
GROUP BY yr
HAVING COUNT(winner)=3

10 列出谁得奖多于一次。

SELECT winner
FROM nobel
GROUP BY winner
HAVING COUNT(*) > 1

11 列出谁获得多于一个奖项(Subject)

SELECT winner
FROM nobel
GROUP BY winner
HAVING COUNT(DISTINCT subject) > 1

12 哪年哪奖项,是同一奖项(subject)颁发给3个人。只列出2000年及之后的资料。

SELECT yr,subject
FROM nobel
WHERE yr >=2000
GROUP BY yr,subject
HAVING COUNT(winner)=3


3 Using Null

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

SELECT name
FROM teacher
WHERE dept IS NULL

2 注意INNER JOIN 不理会没有学系的老师及没有老师的学系。

SELECT teacher.name, dept.nameFROM teacher INNER JOIN deptON (teacher.dept=dept.id)

3 使用不同的JOIN(外连接),来列出全部老师。

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

LEFT JOIN 也可以写成 LEFT OUTTER JOIN 两者相同

4 使用不同的JOIN(外连接),来列出全部学系。

SELECT t.name,d.name
FROM teacher t
RIGHT JOIN dept d ON t.dept = d.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 teachernameand 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来计算老师和流动电话数目。

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

8 使用COUNT 和 GROUP BY dept.name来显示每一学系的老师数目。 使用 RIGHT JOIN 以确保工程系Engineering 是在当中。

SELECT COUNT(name)
FROM teacher t
RIGHT JOIN dept d ON t.dept = d.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 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;


4 Scottish Parliament

1 一个成员被工党逐出党,现没属任何党。找出他

SELECT name
FROM msp
WHERE party IS NULL

2 列出每个党及其领导人。

SELECT name,leader
FROM party

3 列出每个党及其领导人,有些党其实是没有领导人的。

SELECT name,leader
FROM party
WHERE leader IS NOT NULL

4 列出政党名单,当中最少有一名党员在议会内。

SELECT name
FROM party
WHERE code IN (
SELECT party FROM msp )

或者

SELECT p.name
FROM msp m
JOIN party p ON p.code = m.party
WHERE m.name IS NOT NULL
GROUP BY p.name

错误 我最开始使用如下代码

SELECT name
FROM party
WHERE leader IN (SELECT name FROM msp )

错误原因:party 中只显示了领导人,有可能该当在议会的成员为非领导人,所以结果不完整。

5 列出议会成员的名单,如有所属政党,一同列出。确保 Canavan MSP, Dennis 是在名单中。 按msp.name顺序排列。

SELECT m.name,p.name
FROM msp m
LEFT JOIN party p ON p.code = m.party
ORDER BY m.name

6 列出议会中每一政党的党员人数。

SELECT p.Name,COUNT(*)
FROM msp m
JOIN party p on m.party = p.code
WHERE m.name IS NOT NULL
GROUP BY p.Name

7 列出每一政党的议会中党员人数,包括没有党员在议会中的政党。

SELECT p.name,COUNT(m.party)
FROM msp m
RIGHT JOIN party p ON p.code = m.party
GROUP BY p.name

不忽略空值null的聚合函数_sqlzoo 练习题答案 聚合函数 和 空值 部分相关推荐

  1. Python 课课练 (八):函数课后练习题

    目录 一.函数课后练习题 练习前置知识 Chapter One : 开启 Python 之旅 Chapter Two : Python 语言基础.运算符与表达式.程序的控制结构合集 Chapter T ...

  2. R语言使用Hmisc包的impute函数填充dataframe数据中特定数据列中的缺失值、将空值null用上一行和下一行值的平均值填充

    R语言使用Hmisc包的impute函数填充dataframe数据中特定数据列中的缺失值.将空值null用上一行和下一行值的平均值填充 目录

  3. Hive函数(内置函数(字符串函数,数学函数,日期函数,集合函数,条件函数,聚合函数,表生成函数)和自定义函数(自定义函数创建流程,临时函数,永久函数)))(四)

    Hive函数(内置函数和自定义函数) 一.内置函数 1.字符串函数 (1)ascii (2)base64 (3)concat (4)concat_ws (5)format_number (6)subs ...

  4. SQL数据分析:sqlzoo官网学习select,where,order by,limit,聚合函数,having,常用函数,窗口函数,表链接,子查询

    SQL数据分析: 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金 ...

  5. mysql空值判断函数_MySQL中的ifnull()函数判断空值

    我们知道,在不同的数据库引擎中,内置函数的实现.命名都是存在差异的,如果经常切换使用这几个数据库引擎的话,很容易会将这些函数弄混淆. 比如说判断空值的函数,在Oracle中是NVL()函数.NVL2( ...

  6. mysql 聚集函数与group by,聚集函数可以和where一起用吗 聚合函数如何与group by函数一起使用...

    SQL中where语句能用聚合函数吗?聚合函数应该用在having子句中. 聚合函数如果想用在where中的话,应该只能用子查询来实现(在子查询中进行聚合函数计算,然后在主查询中进行where判断). ...

  7. SQL中的函数:单值函数、聚合函数

    前言 单值函数 单值函数的定义 首先什么是单值函数,单值单值就是单个输入,操作单个变量或数值的函数. 具体的特性如下: 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以嵌套 ...

  8. 从图表中的断线简聊DAX中的空值(null)

    之前有个小伙伴做Report,发现他弄得折线图不是连续的,出现了断线的情况,看起来很是奇怪,在某些应该是0值的位置处折线图就断掉了.尝试调整了Report的各种设置也没有解决.这是怎么回事呢? 既然界 ...

  9. Oracle对空值(NULL)的5种处理

    数据库中的空值(NULL)经常会导致一些不可预知的错误,我们需要使用数据库提供的方法对空值进行处理,确保数据查询的准确性. 如下表所示,红色标记的值为空值. 分别使用5种方法对数据库的空值进行判断和处 ...

最新文章

  1. day15-JavaScript字符串操作以及跑马灯示例
  2. 神策数据《银行4.0数字化运营体系构建的方法与实践》正式发布
  3. 报名|第2期“DI极客说”,揭秘决策AI创新应用带来的行业变革
  4. java int字母,从Java中获取int,也包含字母
  5. dlib+VS2019生成踩坑记录(Windows10环境)
  6. servlet篇 之servlet实现
  7. Visual Graph图形控件的高级应用
  8. python写TCP协议
  9. 爬虫——爬取京东评价
  10. HostDeny解除封禁IP
  11. win10插拔U盘、鼠标、键盘等外设的一瞬间,屏幕会闪黑一下
  12. OTFS白皮书-翻译
  13. 前端攻城狮的自我修养1
  14. 恩智浦并购飞思卡尔后的十大优势
  15. Google全球IP地址库
  16. 咨询_计算机屏幕_雾面屏;
  17. 为什么今日头条捂着直播这张好牌不打?
  18. 680SSH二手房交易平台房屋交易网房产销售网交易网站
  19. 新能源电池技术与市场竞争
  20. AI、新材料、5G、智慧城市,未来的社会场景在高交会提前上演

热门文章

  1. Vue.js中,如何自己维护路由跳转记录?
  2. 数据结构之c++感悟
  3. Codeforces Round #236 (Div. 2) C. Searching for Graph(水构造)
  4. SQL查询字段约束名的语句
  5. 关于FP Spread for Web Forms 2.0.0.0
  6. ubuntu安装软件
  7. System.Data.Entity.Core.MetadataException:“Unable to load the specified metadata resource.”
  8. 二叉搜索树判定方法(c++实现)
  9. 小峰视频十四:面向对象和类的概念
  10. 在iOS项目中,这样才能完美的修改项目名称