解题思路
- 此题是要求男性,因此我们直接使用
WHERE gender = 'male'
将男性的数据查询出来; - 要求查询出这些数据中的平均数,平均数无非就是总数/个数。
解题答案
方式一
SELECT COUNT(*) AS male_num, ROUND(SUM(gpa) / COUNT(*), 3) AS avg_gpa
FROM user_profile
WHERE gender = 'male';
上面的方式虽然也能得出答案,但是在计算平均数时,先去求,然后再次求总个数。这样就会发生重复计算一次总个数。
方式二
SELECT COUNT(*) AS male_num, ROUND(AVG(gpa), 3) AS avg_gpa
FROM user_profile
WHERE gender = 'male';
此方式性能更好。因此在进行where和count操作时,其实我们直接使用avg,MySQL会自动去计算总数和总个数。因此不需要方式一种的sum方式去计算。因此需要保留多位小数,我们直接使用round函数就可以了。