关于网友提出的“ORACLE怎么写先排序后分组的前5位”问题疑问,本网通过在网上对“ORACLE怎么写先排序后分组的前5位”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:ORACLE怎么写先排序后分组的前5位
描述:select *
from (select a.*,
row_number() over(partition by ordered order by cdate desc) px
from (select a.*, b.user_name username
from view_hjzx a, gjjx.sys_users b
where a.userid = b.userid(+)
and a.HANDSET like '%15901054535%') a)
where px <= 5 order by cdate desc
数据是好几种分类,标识是ORDERED,然后我想达到的目的是,最大的日期的ORDERED作为一组,显示前五条,然后按日期排序,第二大的ORDERED前五条,第三大的前五条,日期带领5条组号,不知道怎么写,目前的写法有个问题就是后排序,假设第二组有个日期大于第一组他会跑上去,很苦恼
604790441欢迎指导
解决方案1: where px <= 5 order by ORDERED DESC, cdate desc
解决方案2: select *
from (select a.*,
row_number() over(partition by ordered order by cdate desc) px,
FIRST_VALUE(cdate) OVER (partition by ordered order by cdate desc
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) ordered_date
from (select a.*, b.user_name username
from view_hjzx a, gjjx.sys_users b
where a.userid = b.userid(+)
and a.HANDSET like '%15901054535%') a)
where px <= 5
order by ordered_date DESC, ORDERED DESC, cdate desc
以上介绍了“ORACLE怎么写先排序后分组的前5位”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/wd/631952.html