当前位置: 代码迷 >> Oracle开发 >> 一个sql如何写
  详细解决方案

一个sql如何写

热度:71   发布时间:2016-04-24 06:46:42.0
求助一个sql怎么写
年级表
年级id 评分id
主key 年级id,评分ID分为7个级别

班级表
年级id 班级id
双主key 年级id 班级id

我想查出每个评分下的年级id,班级id,评分id,并且每个评分下的年级id数最大只查出10件,按年级id排序。

大家帮帮忙,谢谢

------解决方案--------------------
SELECT * FROM (SELECT a.年级id,b.班级id,a.评分id,row_number() OVER(PARTITION BY a.评分id ORDER BY a.评分id) rn FROM 年级表 a,班级表 b WHERE a.年级id=b.年级id(+)) WHERE rn<=10;
------解决方案--------------------
你的意思是<=10条记录,还是10个年级额,如果是10个年级:
select t4.pfid, t4.njid, t3.bjid
  from (select t2.*, row_number() over(partition by pfid order by njid) rnn
          from (select nj.pfid, bj.njid
                  from nj
                  left join bj
                    on nj.njid = bj.njid
                 group by nj.pfid, bj.njid) t2) t4,
       bj t3
 where t4.njid = t3.njid
   and t4.rnn <= 10
 order by t4.pfid, t4.njid, t3.bjid
  相关解决方案