当前位置: 代码迷 >> Sql Server >> 班级前60%的学生平均分SQL如何写
  详细解决方案

班级前60%的学生平均分SQL如何写

热度:30   发布时间:2016-04-27 14:28:35.0
班级前60%的学生平均分SQL怎么写?
如题。
有个表
学生,班级,分数

想要求某班前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*/
  相关解决方案