如题。
有个表
学生,班级,分数
想要求某班前60%的学生平均分
select top 60 percent avg(分数) from 表 where class='905' order by 分数 desc
提示
列名 '分数' 在 ORDER BY 子句中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
请教怎么给分数线排下序再取 60%
------解决方案--------------------
- SQL code
if object_id('[表]') is not null drop table [表]create table [表] (学生 int identity(1,1),班级 varchar(6),分数 int)goinsert into [表] select '1班',ceiling(60+rand()*40)go 3insert into [表] select '2班',ceiling(60+rand()*40)go 3insert into [表] select '3班', ceiling(60+rand()*40)go 3insert into [表] select '4班', ceiling(60+rand()*40)go 3insert into [表] select '5班', ceiling(60+rand()*40)go 3insert into [表] select '6班', ceiling(60+rand()*40)go 3insert into [表] select '7班', ceiling(60+rand()*40)go 3insert into [表] select '8班', ceiling(60+rand()*40)go 3insert into [表] select '9班', ceiling(60+rand()*40)go 3insert into [表] select '10班', ceiling(60+rand()*40)go 3/*学生 班级 分数----------- ------ -----------1 1班 692 1班 803 1班 714 2班 985 2班 946 2班 797 3班 838 3班 669 3班 8610 4班 9811 4班 8912 4班 7413 5班 7314 5班 7915 5班 8916 6班 8917 6班 7318 6班 9719 7班 8120 7班 9021 7班 8222 8班 6223 8班 8824 8班 7525 9班 6826 9班 6527 9班 8928 10班 8529 10班 9730 10班 75(30 row(s) affected)*/--查看前百分之60的平均分select top 60 percent 班级,avg(分数) 平均分 from [表] group by 班级 order by avg(分数) desc/*班级 平均分------ -----------1班 927班 873班 868班 852班 846班 77*/