计算平均人数

Posted

技术标签:

【中文标题】计算平均人数【英文标题】:Calculate number of people over average 【发布时间】:2021-12-13 23:23:12 【问题描述】:

我正在计算有多少人的成绩高于平均水平。 我目前所拥有的是返回学生人数,当我从 ">=" 中删除“=”时,它返回 0。

SELECT count(*) 
FROM data.students
WHERE grade IN (SELECT grade 
               FROM data.students
               GROUP BY grade HAVING grade >= AVG(grade));

如果我输入一个整数而不是 avg() 函数,我会得到很好的结果。 我做错了什么?

【问题讨论】:

【参考方案1】:

在子查询中计算平均值可能是最快的:

SELECT count(*)
FROM   data.students
WHERE  grade > (SELECT avg(grade) FROM data.students);

> 而不是>=,因为你说“比平均成绩高”

我做错了什么?

在您的子查询中,GROUP BY grade 聚合为每个不同的 grade 值一行。对于每一行,avg(grade) 必然与grade 完全相同(grade IS NULL 除外)。解释您所看到的。 您的查询一开始就不必要地复杂。

【讨论】:

【参考方案2】:

试试这个:

SELECT count(*)
FROM (
       SELECT grade >= AVG(grade) OVER () AS tst
       FROM data.students
     ) AS a
WHERE a.tst= True

【讨论】:

以上是关于计算平均人数的主要内容,如果未能解决你的问题,请参考以下文章

Python编程题:编写函数,计算某班级学生考试的平均分?

c语言:输入10个学生的成绩,求学生的平均成绩,并统计超过平均分数的学生人数。

sql计算机系的平均成绩为多少?

mysql查询部门人数大于所有部门平均人数的部门

java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分

Python|统计学生平均成绩与及格人数