SQL高级查询问题,急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/16 23:24:39
表字段
列名a(学生分数) 列名b(所在班级)

select avg(列名a) as 平均分,列名b as 班级 from 表名
group by 列名b

查询结果:
我上面给的查询语句是:
1班所有学生平均分 1班
2班所有学生平均分 2班
3班所有学生平均分 3班
4班所有学生平均分 4班
5班所有学生平均分 5班
……

以上查询语句没问题,但是我想查询每个班前十名的平均分该怎么办?

急!!!

查询结果要:
1班前10名平均分 1班
2班前10名平均分 2班
3班前10名平均分 3班
4班前10名平均分 4班
5班前10名平均分 5班
……
其实就是没有学生id的,换个问发,就是取出每个班的前十个最大成绩,然后求平均值。

select avg(列名a) as 平均分,列名b as 班级 from 表名 where 学生id列名 in(select top 10 学生id列名 from 表名 order by 列名a desc)
group by 列名b

既然要前10名的,那一定有学生id这个字段吧?

select avg(select top 10 列名a from 表名) as 平均分,列名b as 班级 from 表名
group by 列名b

最好用存储过程,或者取出来后再计算了。

select b,avg(a) from 表名 a1 where
(select count(*) from 表名 where b=a1.b and 表名.a>a1.a)<10 group by b

明显没把问题解释清楚,没学生ID怎么来前10名.