一道面试题目,count()里不同字段时的区别(摘自牛客网)

表结构如下:

1

2

3

4

5

6

7

CREATE TABLE `score` (

   `id` int(11) NOT NULL AUTO_INCREMENT,

   `sno` int(11) NOT NULL,

   `cno` tinyint(4) NOT NULL,

   `score` tinyint(4) DEFAULT NULL,

   PRIMARY KEY (`id`)

 ) ;

以下查询语句结果一定相等的是()

A.SELECT sum(score) / count(*) FROM score WHERE cno = 2; 

B.SELECT sum(score) / count(id) FROM score WHERE cno = 2;

C.SELECT sum(score) / count(sno) FROM score WHERE cno = 2;

D.SELECT sum(score) / count(score) FROM score WHERE cno = 2;

E.SELECT sum(score) / count(1) FROM score WHERE cno = 2;

F.SELECT avg(score) FROM score WHERE cno = 2;

所有的统计函数都会忽略空值(null)。 sum也是
A :统计所有学生的平均分,就算成绩为空的学生,最后计算count(*)时也作为分母基数,计算得到所有学生的平均分。 
B :与A一样,因为id主键非空,count(id)所得分母基数是所有学生。 
C : 与B一样,非空属性sno。 
D :由于score字段的值可能是空,空值在统计时忽略,所以count(score)和sum(score)统计的只是score不为空的学生,计算得到的平均分也只是有成绩的学生的平均分,无法计算所有学生的平均分。 
E: count(1)与count(*)一样。 
F:avg(score)会忽略空值,故计算结果为有成绩的学生的平均分。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值