SQL聚合函数查询

CREATE TABLE nobel(
  yr INT   -- 年份
 ,SUBJECT VARCHAR(15) -- 奖项
 ,winner VARCHAR(50)  -- 获奖者

)DEFAULT CHARSET=utf8;



CREATE TABLE nobel(
  yr INT   -- 年份
 ,SUBJECT VARCHAR(15) -- 奖项
 ,winner VARCHAR(50)  -- 获奖者
)DEFAULT CHARSET=utf8;


-- 给出诺贝尔奖获奖总人数
SELECT COUNT(DISTINCT winner) FROM nobel;


-- 给出诺贝尔物理奖获奖次数
SELECT COUNT(*) FROM nobel WHERE SUBJECT = 'Physics';


-- 显示每个奖项获奖总次数
SELECT SUBJECT,COUNT(*) FROM nobel GROUP BY SUBJECT;


-- 显示每个奖项第一次获得该奖的年份
SELECT SUBJECT,MIN(yr) FROM nobel GROUP BY SUBJECT ;


-- 显示每个奖项在2000年获奖的人数
SELECT SUBJECT,COUNT(winner) FROM nobel WHERE yr = 2000 GROUP BY SUBJECT;


-- 显示每个奖项不同获奖者人数
SELECT SUBJECT,COUNT(DISTINCT winner) FROM nobel GROUP BY SUBJECT;


-- 显示每个奖项有多少年获奖
SELECT SUBJECT,COUNT(DISTINCT yr) FROM nobel GROUP BY sunbject;


-- 显示当年有三个物理奖的年份
SELECT yr FROM nobel WHERE SUBJECT='Physics' GROUP BY yr HAVING COUNT(*)=3;


-- 显示得奖超过一次的获奖者
SELECT SUBJECT,winner FROM nobel GROUP BY winner HAVING COUNT(*)>1;


-- 显示得到多个奖项的获奖者
SELECT winner,COUNT(DISTINCT SUBJECT)FROM nobel GROUP BY winner
HAVING COUNT(DISTINCT SUBJECT)>1; 


-- 显示2000年及以后,有三个人获得同一奖项的年份及奖项
SELECT yr,SUBJECT FROM nobel  WHERE yr >= 2000 GROUP BY yr,SUBJECT
HAVING COUNT(DISTINCT winner)=3;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值