忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1758 | 回复: 1

[求助] oracle表中相邻行分组问题 [复制链接]

论坛徽章:
0
发表于 2017-02-22 23:06 |显示全部楼层
本帖最后由 leechee12 于 2017-02-22 23:35 编辑

oracle提取数据时遇到一个分组问题,尝试了很久也没有解决办法。如有以下表table_abc,表中有name、orderid和date字段。
rn列是我根据name进行分组,date进行倒序的结果,rn2是我根据name和orderid进行分组,date进行倒序的结果。
但是没有达到我想要的结果,我想只对在rn顺序的基础上,对彼此相邻的相同的name和orderid进行分组排序。

name         orderid            date                rn      rn2  
aaaaa        33333333        20161127        1        1
aaaaa        33333333        20151127        2        2
bbbbb        55555555        20170118        1        1
bbbbb        55555555        20170117        2        2
bbbbb        77777777        20161018        3        1
cccccc        88888888        20171123        1        1
cccccc        88888888        20160123        2        2
cccccc        88888888        20151123        3        3
cccccc        99999999        20141123        4        1
cccccc        88888888        20131123        5        4
cccccc        88888888        20121123        6        5

也就是表中以下两部分应该是独立排列的,最后两行的rn2应该为1和2.
cccccc        88888888        20171123        1        1
cccccc        88888888        20160123        2        2
cccccc        88888888        20151123        3        3

-------------------------------------------
cccccc        88888888        20131123        5        1
cccccc        88888888        20121123        6        2

具体sql怎么写,才能在大数据量的情况下高效率的得出结果呢?



论坛徽章:
0
发表于 2017-02-22 23:58 |显示全部楼层
本帖最后由 leechee12 于 2017-02-22 23:59 编辑
  1. name             orderid           date                 rn      rn1  rn2  rn2-rn1  rn3
复制代码
参考网上得到一种解法,先列出以name和orderid作为partition的rn1顺序下的序号rn2,再列出rn2-rn1的值,
再以name、orderid和rn2-rn1作为partition进行排列,得到rn3,即为想要的结果。
不知道还有没有其他更好的办法呢。。。
name             orderid              date                 rn       rn1    rn2  rn2-rn1   rn3
aaaaa            33333333          20161127          1           1     1      0      1
aaaaa            33333333          20151127          2           2     2      0      2
bbbbb            55555555          20170118          1           1     3      2      1
bbbbb            55555555          20170117          2           2     4      2      2
bbbbb            77777777          20161018          3           1     5      4      1
ccccc            88888888           20171123          1           1     6      5      1
ccccc            88888888           20160123          2           2     7      5      2
ccccc            88888888           20151123          3           3     8      5      3
ccccc            99999999          20141123          4           1     9      8      1
ccccc            88888888          20131123          5           4     10     6      1
ccccc            88888888          20121123          6           5     11     6      2


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

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP