求助一个sql怎么写

wren4255 2014-03-06 12:24:17
年级表
年级id 评分id
主key 年级id,评分ID分为7个级别

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

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

大家帮帮忙,谢谢
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
_拙计 2014-03-06
  • 打赏
  • 举报
回复
你的意思是<=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
wren4255 2014-03-06
  • 打赏
  • 举报
回复
谢谢回答 请问为什么要用左连接呢
qingrou123 2014-03-06
  • 打赏
  • 举报
回复
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;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧