sql - 如何计算范围内平均值的记录
问题描述
我需要计算平均成绩从 7.6 到 8.3 的学生人数我试过
Select count(*) from tabele
Where AVG(grade)> 7.6
and AVG(Grade)<8.3
Group by id
但是总是有错误
解决方案
下面的方法是首先按学生汇总并在一个子句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;
推荐阅读
- c# - 从 C# 中的 StrokeCollection 渲染图像
- javascript - 如何在firebase的最后一个列表中写入一个数组?
- datetime - 雪花将字符串转换为时间戳
- javascript - MVC 5在用户ID文本框更改时自动填充电子邮件文本框
- javascript - beforeRouteLeave 与创建奇怪的交互
- java - java.io.IOException:只读文件系统,在android虚拟设备上测试时
- algorithm - 给定有限的移动集,最小成本路径(遍历网格),以及不同位置的移动成本可能不同?
- javascript - 甜蜜警报无法在 iOS 上运行 [PHP]
- c++ - 在 C++ 中定义地图的打字稿样式联合类型
- php - 在php中访问json对象