查看: 4528|回复: 14

[SQL] 【讨论】求连续数的统计

[复制链接]
认证徽章
论坛徽章:
30
阿斯顿马丁
日期:2014-01-19 12:48:30秀才
日期:2015-09-21 09:46:16秀才
日期:2015-10-26 09:55:08秀才
日期:2015-12-25 15:31:10秀才
日期:2016-01-12 11:23:27秀才
日期:2016-01-25 15:02:042016猴年福章
日期:2016-02-23 09:58:34秀才
日期:2016-04-21 14:08:53白羊座
日期:2016-05-30 14:22:00秀才
日期:2016-06-23 14:15:06
发表于 2015-2-13 13:58 | 显示全部楼层 |阅读模式
1pub币
表结构如下:roeid      

1082321
1082326
1082358
1084069
1084075
1084076
1084099
1084103
1084117


求将roeid 字段的最大连续个数求出
查看野花版主的帖子,使用lag函数,但是一直没写出,构造rownum列,
select tmp.roeid ,tmp.rownum,roeid-lag(roeid) over (order by rownum)-1 S from tmp
S字段为0的即为连续的,现在需要求出最大连续的个数,脑子现在短路了,一直没想出,求助。
求职 : 数据库管理员
招聘 : Java研发
认证徽章
论坛徽章:
6348
ITPUB9周年纪念徽章
日期:2014-05-02 10:36:402011新春纪念徽章
日期:2014-12-29 12:11:142010广州亚运会纪念徽章:卡巴迪
日期:2014-08-06 08:44:252012新春纪念徽章
日期:2014-12-29 12:11:142013年新春福章
日期:2014-12-29 12:11:14马上有车
日期:2014-12-29 12:11:14马上有房
日期:2014-12-29 12:11:14马上有钱
日期:2014-12-29 12:11:14马上有对象
日期:2014-12-29 12:11:14马上加薪
日期:2014-12-29 12:11:14
发表于 2015-2-13 13:58 | 显示全部楼层
  1. select max(level) from t
  2. connect by id = prior id+1
复制代码

使用道具 举报

回复
认证徽章
论坛徽章:
244
2015年新春福章
日期:2015-05-28 10:58:322015年新春福章
日期:2015-03-19 09:32:472015年新春福章
日期:2015-03-06 11:58:182015年新春福章
日期:2015-05-21 11:46:522015年新春福章
日期:2015-05-22 13:32:002015年新春福章
日期:2015-06-25 14:26:362015年新春福章
日期:2015-07-01 17:15:212015年新春福章
日期:2015-07-01 17:15:212015年新春福章
日期:2015-07-01 17:12:082015年新春福章
日期:2015-05-18 13:50:34
发表于 2015-2-13 14:26 | 显示全部楼层
with t as ( select 1082321 as tid from dual union all
select 1082326 as id from dual union all
select 1082358 as id from dual union all
select 1084069 as id from dual union all
select 1084075 as id from dual union all
select 1084076 as id from dual union all
select 1084099 as id from dual union all
select 1084103 as id from dual union all
select 1084117 as id from dual  )
select
*
from
(
select rnk,count(*) cnt from  (
select tid, lag(tid,1,tid) over ( order by tid) - rownum  as rnk  from t
)aa
group by rnk
order by cnt desc
)stg
where rownum=1


使用道具 举报

回复
论坛徽章:
16
蛋疼蛋
日期:2012-04-27 23:09:45罗罗诺亚·索隆
日期:2016-11-04 21:04:09懒羊羊
日期:2015-06-23 09:05:532015年新春福章
日期:2015-04-01 14:21:232015年新春福章
日期:2015-03-06 11:58:39慢羊羊
日期:2015-03-04 14:53:33青年奥林匹克运动会-击剑
日期:2014-08-29 15:44:44马上加薪
日期:2014-02-18 16:48:492014年新春福章
日期:2014-02-18 16:48:49一汽
日期:2013-12-24 18:12:09
发表于 2015-2-13 14:42 | 显示全部楼层
select count(*) + 1
  from (select case
                 when id - id1 = 1 then
                  'xxoo'
               end id2
          from (select id, lag(id) over(order by id) id1 from t order by id))
where id2 = 'xxoo';

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
11
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34懒羊羊
日期:2015-03-04 14:52:11懒羊羊
日期:2015-02-10 13:36:05马上有对象
日期:2015-02-02 12:29:02红宝石
日期:2015-01-19 09:44:10马上有车
日期:2014-11-11 14:16:07马上有车
日期:2014-03-27 15:59:39优秀写手
日期:2014-03-12 06:00:13马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2015-2-13 14:43 | 显示全部楼层
SELECT MAX(COUNT(*))
  FROM (SELECT TID - ROW_NUMBER() OVER(ORDER BY TID) TID FROM T)
GROUP BY TID

使用道具 举报

回复
论坛徽章:
17
2013年新春福章
日期:2013-02-25 14:51:242015年新春福章
日期:2015-03-04 14:53:16马上加薪
日期:2014-12-18 01:09:30祖国65周年纪念徽章
日期:2014-09-27 08:49:22马上有房
日期:2014-07-16 11:59:32优秀写手
日期:2014-07-10 06:00:12马上加薪
日期:2014-04-20 23:04:51马上有对象
日期:2014-04-19 23:32:33马上有车
日期:2014-03-29 23:05:24问答徽章
日期:2014-01-17 15:19:03
发表于 2015-2-14 16:11 | 显示全部楼层
上面版主简单明了

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2015-2-15 09:47 | 显示全部楼层
2009532140 发表于 2015-2-13 15:08

学习了。

使用道具 举报

回复
论坛徽章:
4
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442011新春纪念徽章
日期:2011-04-25 15:09:25喜羊羊
日期:2015-03-04 14:49:392015年新春福章
日期:2015-03-06 11:57:31
发表于 2015-2-26 10:02 | 显示全部楼层
这样也行,学习了

使用道具 举报

回复
认证徽章
论坛徽章:
7
itpub13周年纪念徽章
日期:2014-10-08 15:13:38马上有对象
日期:2014-10-13 14:35:33优秀写手
日期:2014-12-06 06:00:15慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47ITPUB14周年纪念章
日期:2015-10-26 17:23:44秀才
日期:2015-11-23 09:48:22
发表于 2015-2-27 09:07 | 显示全部楼层
2009532140 发表于 2015-2-13 15:08

高!!!!!!

使用道具 举报

回复
论坛徽章:
8
2011新春纪念徽章
日期:2011-01-04 10:38:21ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24ITPUB社区千里马徽章
日期:2013-06-09 10:15:34优秀写手
日期:2014-06-25 06:00:12懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
发表于 2015-2-28 16:31 | 显示全部楼层
with t as ( select 1082321 as tid from dual union all
select 1082326 as id from dual union all
select 1082358 as id from dual union all
select 1084069 as id from dual union all
select 1084075 as id from dual union all
select 1084076 as id from dual union all
select 1084099 as id from dual union all
select 1084103 as id from dual union all
select 1084117 as id from dual  ),
t1 as (
select tid-rownum as tid,count(*) as rn from t
group by tid-rownum
)
select max(rn) from t1

使用道具 举报

回复

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

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年9月21日~23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表