简易问题求一条SQL语句
sql server 数据库
学生成绩表
按班级分组求平均 select avg(语文),avg(数学),avg(外语) from cjk GROUP by 班级
现在有些变化,要求只对 各科的 全年级的前100名 按班级分组求平均求平均,如何写SQL?
退一步,如果我已经得到 语文前100名的分数为98 数学97 外语90,是否简单一些
[解决办法]
这个比较复杂,只能一科一科来查,得多个语句,如ms sql中
select avg(语文) from (select top 100 语文,班级 from cjk order by 语文) group by 班级
[解决办法]
Select 班级,avg(A) 语文,avg(B) 数学,avg(C) 外语
From (
select TOP 100 班级,语文 A,0 B,0 C from cjk order by 语文 Desc
union all
select TOP 100 班级,0,数学,0 from cjk order by 数学 Desc
union all
select TOP 100 班级,0,0,外语 from cjk order by 外语 Desc
) x
GROUP by 班级
[解决办法]
select avg(语文) from (select top 100 语文,班级 from cjk order by 语文) group by 班级,select avg(数学) from (select top 100 数学,班级 from cjk order by 数学) group by 班级,select avg(外语) from (select top 100 外语,班级 from cjk order by 外语) group by 班级
[解决办法]
select 班级,avg(语文) from (select top 100 语文,班级 from cjk order by 语文 desc) group by 班级
select 班级,avg(数学) from (select top 100 数学,班级 from cjk order by 数学 desc) group by 班级
select 班级,avg(外语) from (select top 100 外语,班级 from cjk order by 外语 desc) group by 班级