样表数据:学籍号    姓名    考生号    考生类别    学校代码    学校名称    班级代码    班级名称    语文    数学理    英语    物理    化学    生物    总成绩
1.30131E+11    周家槟    1.30131E+11    不分类别    3101    31xx中学    1002    10级2班    97    125    126.5    96    96    90    630.5
1.30131E+11    陈建宇    1.30131E+11    不分类别    3101    32xx中学    1002    10级2班    106    113    123    100    94    88    624
1.30131E+11    雷卓亚    1.30131E+11    不分类别    3101    33xx中学    1001    10级1班    102    114    134    96    91    86    623
1.30131E+11    杨婷    1.30131E+11    不分类别    3101    34xx中学    1001    10级1班    109    117    120.5    87    93    90    616.5
1.30131E+11    方文琦    1.30131E+11    不分类别    3101    35xx中学    1004    10级4班    108    116    126.5    83    92    91    616.5
1.30131E+11    程寅    1.30131E+11    不分类别    3101    36xx中学    1001    10级1班    101    119    125    90    96    84    615
1.30131E+11    刘巧    1.30131E+11    不分类别    3101    37xx中学    1002    10级2班    96    115    128.5    91    89    92    611.5
1.30131E+11    周焱    1.30131E+11    不分类别    3101    38xx中学    1004    10级4班    104    116    127.5    85    86    91    609.5
1.30131E+11    徐豪    1.30131E+11    不分类别    3101    39xx中学    1001    10级1班    106    116    121    92    87    87    609
1.30131E+11    高鹏    1.30131E+11    不分类别    3101    40xx中学    1002    10级2班    101    108    127    95    86    91    608
1.30131E+11    芶叶    1.30131E+11    不分类别    3101    41xx中学    1002    10级2班    103    103    126.5    95    88    92    607.5
1.30131E+11    张宇阳    1.30131E+11    不分类别    3101    42xx中学    1002    10级2班    101    101    123.5    100    95    86    606.5
1.30131E+11    杜莹莹    1.30131E+11    不分类别    3101    43xx中学    1001    10级1班    107    102    120    100    88    89    606要求分学校、年级、班级统计出 某学科的优秀率(该班大于等于优秀分的人数除以该班总人数)

解决方案 »

  1.   

    不是作业。
    这样算出来,没有小数:
    declare @yuwen intdeclare @renshu intset @yuwen = 78 set @renshu = 55select 学校名称,年级,SUM(CASE WHEN 语文>=@yuwen THEN 1 ELSE 0 END)/count(语文)*1.*100 as 语文合格率 from [1112b].[dbo].[scores_xx] where 年级='3' group by 学校名称,班级,年级
    order by 学校名称
      

  2.   

    琢磨出来了
    select 学校名称,年级,班级,SUM(CASE WHEN 语文>=@yuwen THEN 1 ELSE 0 END) as 语文上线人数,count(语文) as 总人数,cast(SUM(CASE WHEN 语文>=@yuwen THEN 1 ELSE 0 END)*1./count(语文)*1.*100 as dec(18,1)) as 语文合格率 from [1112b].[dbo].[scores_xx] where 年级='3' group by 学校名称,年级,班级
    order by 学校名称