select rownum as MingCi,sid, sname, avg(grade) 
from table1
group by sid 
order by avg(grade) desc

解决方案 »

  1.   

    试试:selcet rownum as 名次,
           a.姓名,
           a.平均分 
    from (
       selcet SNAME as 姓名,
         sum(GRADE)/(selcet sum(count(*)) cid_cot from TABLE1 group by CID) as 平均分 
       from TABLE1
       group by SNAME
    ) 
    order by a.平均分 desc 
      

  2.   

    补足:
     子查询为表a
    ----------------
    selcet rownum as 名次,
           a.姓名,
           a.平均分 
    from (
       selcet SNAME as 姓名,
         sum(GRADE)/(selcet sum(count(*)) cid_cot from TABLE1 group by CID) as 平均分 
       from TABLE1
       group by SNAME
    ) a
    order by a.平均分 desc
      

  3.   

    select sname,grade,rownum from(select sname sname,avg(grade) grade from T1 group by sname) order by sname
      

  4.   

    追加相同排名功能:
    selcet DENSE_RANK() OVER(ORDER BY a.平均分 DESC) AS as 名次,
           a.姓名,
           a.平均分 
    from (
       selcet SNAME as 姓名,
         sum(GRADE)/(selcet sum(count(*)) cid_cot from TABLE1 group by CID) as 平均分 
       from TABLE1
       group by SNAME
    ) a
    order by a.平均分 desc
      

  5.   

    各位:平均分=(按照名字区分) 每个人总分数/科目数 
    好像不等于avg(单科分数) 吧?
      

  6.   

    还有,关于你“平均分!=avg(单科分数) ”的疑问:看table1是怎么记的了——缺考也记上NULL或0 了呢?
      

  7.   

    to:malligator(大螟) 
     不是跟你较真,从问题出发,可能我的方式有些直接了。1、如要求如下:
    -------------------------------->
    LZ是要求1,2,3,3,5这样的排名吧?
    符合??3,3,5!?
    --------------------------------<
    可以把我写的最后一个sql改一下:DENSE_RANK() OVER(ORDER BY a.平均分 DESC) AS as 名次
    --->
    RANK() OVER(ORDER BY a.平均分 DESC) AS 名次2、缺考的情况就由楼主自己解决了。