17回答

0收藏

如何在Oracle选前100行?

技术问答 技术问答 385 人阅读 | 17 人回复 | 2022-03-03

我的要求是获得每个客户的最新订单,然后获得前100条记录。! F; L; d, r( S  D- W9 i
我写了一个查询,如下所示,以获得每个客户的最新订单。内部查询工作正常。但我不知道如何根据结果获得前100名。0 I+ O0 s9 s6 {: s0 y) D( N
                SELECT * FROM (      SELECT id,client_id,ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn       FROM order   ) WHERE rn=1有什么想法吗?
% K& a5 n) x% l                                                               
3 b( j* P2 W0 a/ ^2 S. Z2 A    解决方案:                                                                . f4 `% {( Q# A) P
                                                                假设create_time包括创建订单的时间,你想要100个有最新订单的客户,可以:
# b2 }, t/ P$ v4 l' O
  • 添加到最内部的查询中create_time
  • 通过以下命令对外部查询结果进行排序 create_time desc
  • 添加最外层查询,该查询使用以下内容过滤前100行 ROWNUM询问:$ @2 t' V8 @) m5 |9 c% n2 ^
            SELECT * FROM (     SELECT * FROM (        SELECT           id,          client_id,          create_time,         ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn         FROM order     WHERE rn=     ORDER BY create_time desc  ) WHERE rownum Oracle 12c的更新
    4 x0 p; [2 q1 e5 U在版本12.1中,Oracle引入真 Top-N查询。使用新的FETCH FIRST...您还可以使用语法:
    0 w/ k% z2 x, Q( U7 E: H        SELECT * FROM  SELECT       id,      client_id,      create_time,     ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn     FROM order )  WHERE rn = 1  ORDER BY create_time desc  FETCH FIRST 100 ROWS ONLY)
  • 分享到:
    回复

    使用道具 举报

    回答|共 17 个

    风鹏待举

    发表于 2022-3-3 23:11:05 | 显示全部楼层

    楼猪V5啊
    回复

    使用道具 举报

    西江少佐

    发表于 2022-3-5 13:32:11 | 显示全部楼层

    very good
    回复

    使用道具 举报

    新闻时事关注者

    发表于 2022-3-6 14:45:29 | 显示全部楼层

    技术很牛逼
    回复

    使用道具 举报

    高金忠

    发表于 2022-3-7 09:06:22 | 显示全部楼层

    LZ敢整点更有创意的不?兄弟们等着围观捏~
    回复

    使用道具 举报

    周冰

    发表于 2022-3-8 04:45:44 | 显示全部楼层

    LZ帖子不给力,勉强给回复下吧
    回复

    使用道具 举报

    斜阳下的注视者

    发表于 2022-3-8 15:52:26 | 显示全部楼层

    真心不错的啊
    回复

    使用道具 举报

    布兰达

    发表于 2022-3-8 23:25:30 | 显示全部楼层

    前排顶,很好!
    回复

    使用道具 举报

    闲人大叔

    发表于 2022-3-9 05:19:28 | 显示全部楼层

    学习IT中
    回复

    使用道具 举报

    李海梁

    发表于 2022-3-9 10:39:22 | 显示全部楼层

    支持楼主,用户楼主,楼主英明呀!!!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    29055 积分
    9659 主题
    热门推荐