正确答案是 B: SELECT class, AVG(成绩) FROM 成绩表 WHERE class<=3 GROUP BY class。
分析:
1. **A选项**:`SELECT AVG(成绩) FROM 成绩表 WHERE class<=3` 只会返回一个平均成绩的值,而不是按班级分组后的多个结果。因此,这个选项不符合题意。
2. **B选项**:`SELECT class, AVG(成绩) FROM 成绩表 WHERE class<=3 GROUP BY class` 这个查询语句会根据班级分组,然后计算每个班级的平均成绩。这与题目中描述的结果(1班 80;2班 75;3班 82)相符。
3. **C选项**:`SELECT class, AVG(成绩) FROM 成绩表 WHERE class<=3 ORDER BY class` 语句中缺少 `GROUP BY` 子句,因此它不能按班级分组计算平均成绩,也不符合题意。
4. **D选项**:`SELECT class, AVG(成绩) FROM 成绩表 HAVING class <=3 GROUP BY class` 使用 `HAVING` 子句来过滤结果是错误的,因为 `HAVING` 通常用于过滤分组后的结果,而这里应该在分组前使用 `WHERE` 来过滤数据。
因此,B选项是唯一正确的选择,因为它正确地使用了 `GROUP BY` 子句来按班级分组并计算平均成绩。