解题思路

  1. 此题是要求男性,因此我们直接使用WHERE gender = 'male'将男性的数据查询出来;
  2. 要求查询出这些数据中的平均数,平均数无非就是总数/个数。

解题答案

方式一

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函数就可以了。