题解 | #计算男生人数以及平均GPA#

计算男生人数以及平均GPA

http://www.nowcoder.com/practice/7d9a7b2d6b4241dbb5e5066d7549ca01

select count(id) male_num, avg(gpa) avg_gpa
from user_profile
where gender = 'male'
此题用到了两个函数:
  1. count():统计行数
  2. avg():求平均值
扩展:
1. count(1)、count(*)、count (字段)的区别?
    count(1)和 count(*)都是统计所有行数,count(字段)统计该字段非null的行数,
    执行效率简单来说,count(1)和count(*)相同,因为它们都要做全表扫描,count(字段)效率比前两者效率高。
2. avg()函数 会忽略null值,而不是将其当做“0”参与运算。

全部评论
`count(*)` 和 `count(字段)` 主要有两方面区别: **统计范围**: - `count(*)` 统计的是符合查询条件的所有行数,包括该字段值为 `NULL` 的行。比如说表里有10行数据,不管某字段有没有 `NULL` 值,`count(*)` 都返回10 。 - `count(字段)` 只统计该字段值不为 `NULL` 的行数。如果某字段有3个 `NULL` 值,那 `count(字段)` 返回的就是总行数减去3 。 **执行效率**: - 在多数数据库中,`count(*)` 优化得更好,执行效率相对高。因为数据库引擎对 `count(*)` 有专门优化,不用逐行去判断字段值。 - `count(字段)` 得逐行检查该字段是否为 `NULL` ,相对更耗时。
点赞 回复 分享
发布于 10-28 00:52 北京
没必要用子查询 就硬用?
点赞 回复 分享
发布于 2022-08-04 14:03

相关推荐

hwwhwh:同双非,有大厂实习其实也没啥用,主要看运气,等就行了
点赞 评论 收藏
分享
评论
14
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务