The nobel table can be used to practice more SUM and COUNT functions 习题答案

做SQLZOO时,发现The nobel table can be used to practice more SUM and COUNT functions(SUM and COUNT 有个选项可以进到这节) 这节没有没有人做出答案来。我就摸索了一下,把答案传上来。

(1)需要注意的是,where和group by……having是可以同时使用的,但是用法不同。where用于过滤分组前,是对原数据进行过滤,having用于过滤分组后,对分好的组进行过滤。因此只要分好是分组前操作还是分组后操作,这些题都比较好完成.
(2)where和group by……having+函数 是对各分组内进行函数运算

1. Show the total number of prizes awarded.
SELECT COUNT(subject) FROM nobel
2. List each subject - just once
SELECT DISTINCT subject FROM nobe
3.Show the total number of prizes awarded for Physics.
SELECT COUNT(*) 
FROM nobel
WHERE subject='Physics'
4.For each subject show the subject and the number of prizes.
SELECT subject,COUNT(*)
FROM nobel
GROUP BY subject
5.For each subject show the first year that the prize was awarded.
SELECT subject,min(yr)
FROM nobel
GROUP BY subject
6.For each subject show the number of prizes awarded in the year 2000.
SELECT subject,COUNT(*)
FROM nobel
WHERE yr=2000
GROUP BY subject
7.Show the number of different winners for each subject.
SELECT subject,COUNT(DISTINCT winner)
FROM nobel
GROUP BY subject
8.For each subject show how many years have had prizes awarded.
SELECT subject,COUNT(DISTINCT yr)
FROM nobel
GROUP BY subject;
9.Show the years in which three prizes were given for Physics.
SELECT yr
FROM nobel
WHERE subject='Physics'
GROUP BY yr
HAVING count(yr)=3
10.Show winners who have won more than once.
SELECT winner
FROM nobel
GROUP BY winner
HAVING COUNT(winner) >1
11.Show winners who have won more than one subject.
SELECT winner
FROM nobel
GROUP BY winner
HAVING COUNT(DISTINCT subject)>1
12.Show the year and subject where 3 prizes were given. Show only years 2000 onwards.
SELECT yr,subject
FROM nobel
WHERE yr>=2000
GROUP BY yr,subject
HAVING COUNT(winner)=3
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值