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

ChinaUnix.net

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


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

本版积分规则

【有奖调查】AI时代如何迎接未知挑战?

人工智能一直在医疗行业扮演着重要角色,最早的专家系统和后来的基因诊断都是人工智能技术在医疗的行业探索。近年来,随着深度学习等技术的进步,人工智能在医疗行业的应用领域不断扩展,医学影像智能诊断、语音电子病历、癌症智能诊断等均已逐渐成为热门发展方向。
而作为人工智能重要推动力的深度学习技术的快速发展却亟需认知系统的强力支撑。
----------------------------------------
活动时间:2017年5月15日-6月5日

调查入口>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP