首页 > 解决方案 > 如何计算范围内平均值的记录

问题描述

我需要计算平均成绩从 7.6 到 8.3 的学生人数我试过

Select count(*) from tabele
Where AVG(grade)> 7.6
and AVG(Grade)<8.3 
Group by id

但是总是有错误

标签: sqlcountaverage

解决方案


下面的方法是首先按学生汇总并在一个子句id中断言平均成绩要求。HAVING然后,子查询以查找此类匹配学生的计数。

SELECT COUNT(*)
FROM
(
    SELECT id
    FROM yourTable
    GROUP BY id
    HAVING AVG(Grade) > 7.6 AND AVG(Grade) < 8.3
) t;

假设您的 RDBMS 支持窗口函数,这是我们可以通过单个查询获取计数的一种方法:

SELECT DISTINCT COUNT(*) OVER () AS total_cnt
FROM yourTable
GROUP BY id
HAVING AVG(Grade) > 7.6 AND AVG(Grade) < 8.3;

推荐阅读