当前位置: 代码迷 >> Sql Server >> 怎么求出成绩中接近总人数 80% 的那个分数
  详细解决方案

怎么求出成绩中接近总人数 80% 的那个分数

热度:345   发布时间:2016-04-27 11:49:09.0
如何求出成绩中接近总人数 80% 的那个分数
样本数据:
SQL code
学校    年级    班级    姓名    考号    语文小学    3    2    黄雅文    302094    99小学    3    2    左  潇    302022    98小学    3    1    黄昌毅    302027    98小学    3    1    熊  磊    302013    97小学    3    2    刘思宇    302024    97小学    3    2    郭佩婷    302034    97小学    3    2    陈珂艺    302096    97小学    3    3    王子恺    303007    97小学    3    1    杨宇航    302003    96小学    3    2    刘鸿林    302010    96小学    3    1    刘雨露    302047    96小学    3    1    谢思瑶    302109    96小学    3    2    彭旗锐    303010    96小学    3    3    赵梦欣    303011    96小学    3    2    罗佳蔚    303014    96小学    3    2    王玉娇    302002    95小学    3    1    万超俊    302023    95小学    3    2    杨洋铭    302032    95小学    3    1    杜浩东    302101    95小学    3    2    宋云笛    303002    95小学    3    2    罗  杰    302056    94小学    3    2    龚雅旭    302068    94小学    3    1    刘羽雪    302095    94小学    3    1    周鑫冉    302103    94小学    3    1    王佳浩    302001    94小学    3    1    张梦婷    302007    94小学    3    2    杨  燚    302030    94小学    3    1    曹丽萍    302051    94小学    3    2    李孟豪    302064    93小学    3    1    曹鑫阳    302065    93小学    3    2    肖翔宸    302058    93小学    3    1    杨  璐    302061    93小学    3    1    曹丽婷    302091    93小学    3    2    黄俊辉    302106    93小学    3    2    李其瑞    302026    93小学    3    1    李东豪    302041    93小学    3    2    杨晓壹    302028    93小学    3    2    吕  佳    302060    86小学    3    2    张宇豪    302066    85小学    3       2       王小明  302067  84

这40条记录,要求取出成绩中接近总人数 80% 的那个分数,
40*0.8=32 第32条记录的数据是:93,但是因为93分的人太多93分实际上是第37条记录,
37/40=0.925 为92.5%
所以要取上面的 94分,94分的记录是:28
28/40=0.7 为70% 和取93分的92.5比较起来,94分最接近总人数的 80% 所以要取94分。

求算法和解题思路。

------解决方案--------------------
大致可以这么算:
SQL code
declare @temp int = (select COUNT(1) from 表格)        , @sql varchar(1000) = 'with tmptable as ('set @temp = @temp* 0.8set @sql [email protected] + 'select top ' + convert(varchar(10),@temp) + ' * from 表格 order by 语文) select top 1 * from tmptable order by 语文 desc'exec(@sql)
------解决方案--------------------
楼上的这个貌似还是93
  相关解决方案