第一个ROW_NUMBER是按照ID排列的顺序,第二个是在同一个值里面(0或1)按照ID排序的顺序。如果0连续出现,这两个顺序之差就是一个固定的值,假如中间插入了1, 那么就会出现断层,一旦又连续了,这两个顺序之差又变成另一个固定的值。这个差值就可以作为我们分组的依据。

下面这个查询可以向你展示这个两个ROW_NUMBER及其差值是如何变化的:

WITH D AS (

SELECT  1 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT  2 AS ID,1 AS VAL FROM DUAL

UNION ALL SELECT  3 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT  4 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT  5 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT  6 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT  7 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT  8 AS ID,1 AS VAL FROM DUAL

UNION ALL SELECT  9 AS ID,1 AS VAL FROM DUAL

UNION ALL SELECT 10 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT 11 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT 12 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT 13 AS ID,1 AS VAL FROM DUAL

UNION ALL SELECT 14 AS ID,1 AS VAL FROM DUAL

UNION ALL SELECT 15 AS ID,0 AS VAL FROM DUAL

UNION ALL SELECT 16 AS ID,0 AS VAL FROM DUAL

)

SELECT D.*

,ROW_NUMBER() OVER(ORDER BY ID) RN1

,DECODE(VAL,0,ROW_NUMBER() OVER(PARTITION BY VAL ORDER BY ID)) RN2

,ROW_NUMBER() OVER(ORDER BY ID)

-ROW_NUMBER() OVER(PARTITION BY VAL ORDER BY ID) GRP

FROM D;

ID        VAL        RN1        RN2        GRP

---------- ---------- ---------- ---------- ----------

1          0          1          1          0

2          1          2                     1

3          0          3          2          1

4          0          4          3          1

5          0          5          4          1

6          0          6          5          1

7          0          7          6          1

8          1          8                     6

9          1          9                     6

10          0         10          7          3

11          0         11          8          3

12          0         12          9          3

13          1         13                     9

14          1         14                     9

15          0         15         10          5

16          0         16         11          5

16 rows selected.

oracle 连续次数,如何求字段连续出现的次数?相关推荐

  1. Leetcode1703. 得到连续 K 个 1 的最少相邻交换次数[C++题解]:难(货仓选址加强版+滑动窗口+前缀和)

    文章目录 题目分析 题目链接 题目分析 首先需要明确一点:最优结果中1的相对位置和开始时不会改变.否则的话就是交换两个1,会徒劳增加交换次数. 比如[1,0,0,0,0,0,1,1],最后变成[0,0 ...

  2. 求列表最大元素不用max_python3实现从一个无序列表中求取连续元素之和中最大的和...

    介绍 今天遇到一个需求,要求从一个无序列表中求取连续元素之和中最大的和.使用python做了实现,后来想着可以作为一个小知识点分享出来,或许能在某时某刻给某位同学一些帮助.下面就直接上代码(图片和文字 ...

  3. Algorithm:C++语言实现之求最大连续子数组(暴力法、分治法、分析法、动态规划法)

    Algorithm:C++语言实现之求最大连续子数组(暴力法.分治法.分析法.动态规划法) 目录 求最大连续子数组 T1.code暴力法  O(n3) T2.分治法   O( n*log(n) ) T ...

  4. matlab求系统全响应,利用matlab求LTI连续系统的响应

    <利用matlab求LTI连续系统的响应>由会员分享,可在线阅读,更多相关<利用matlab求LTI连续系统的响应(3页珍藏版)>请在人人文库网上搜索. 1.实验3 利用mat ...

  5. 【华为机试题HJ86】求最大连续bit数

    HJ86 求最大连续bit数 一.题目描述 二.参考代码1 三.参考代码2 一.题目描述 求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 二.参 ...

  6. 强训之【求最大连续的bit数和最近公共祖先】

    目录 1.求最大连续的bit数 1.1题目 1.2思路 1.2.1暴力求解 1.2.2 字符串分割求解 1.2.3 位运算"与"求解 1.3代码 1.3.1暴力求解代码 1.3.2 ...

  7. 求最大连续子数组之和

    求最大连续子数组之和 代码实现 public static void main(String[] args) {// TODO Auto-generated method stubint[] arra ...

  8. 利用matlab求零输入响应波形,实验3 利用matlab求LTI连续系统的响应

    实验3 利用matlab求LTI连续系统的响应 一. 实验目的: 1. 了解LTI系统的冲激响应h(t)及matlab实现: 2. 了解LTI系统的阶跃响应g(t)及matlab实现: 3. 了解LT ...

  9. mysql查询字段是否递增连续_自增长字段值的连续递增实现

    一.背景 在上一篇<数据库操作类SqlHelper>博文的最后,提到了一个实践运用中遇到的问题,就是数据库表中的自增长字段的赋值不受人为控制.比如数据库有一个tb_Department表, ...

最新文章

  1. UML类图符号 各种关系说明以及举例
  2. 在C#中读取枚举值的描述属性
  3. 如何在浏览器端爬取信息(只是配置的部分)----设置环境
  4. iPhone开源项目汇总(更新版)
  5. Acwing291. 蒙德里安的梦想:状态压缩dp
  6. 10个python使用技巧
  7. luogu P2791 幼儿园篮球题
  8. GFS - The Google File System
  9. gdb ldexp_带有Python示例的math.ldexp()方法
  10. 当你已经23~男生女生都该看
  11. css的长度单位没有哪些,css 长度单位知多少
  12. caffe---测试模型分类结果并输出(python )
  13. php_eol为什么没有换行,PHP PHP_EOL 换行符
  14. 金格pdf打开服务器文件,金格插件解决方法.pdf
  15. YDOOK: ANSYS Maxwell 19 教程17:Maxwell 2D 网格划分 网格划分工具有哪些
  16. js获取移动端屏幕高度和宽度等设备尺寸
  17. linux 控制音量大小,linux 控制音量大小
  18. 关于Linux查询ip地址时出现乱码
  19. Shell 获取服务器IP地址
  20. 2017年2月28日-----------乱码新手自学.net 之特性与验证

热门文章

  1. 移动端最强适配(rem适配之px2rem) 移动端结合Vuex实现简单loading加载效果
  2. 控制客户端对同一个服务端地址的连接端口数量
  3. 4.1ASP.NET Core请求过程「深入浅出ASP.NET Core系列」
  4. go的打包依赖构建工具-dep
  5. 机器学习中的欠拟合与过拟合
  6. 分布式系统的面试题11
  7. 推动健全云生态 阿里云锐不可当
  8. JS---设计简易日历
  9. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
  10. 转: java并发编程-Executor框架