`

巧用rownum查询连续季度

    博客分类:
  • db
 
阅读更多

下面可以说是这类查询的一个模版SQL,如果大家在工作中碰到类似的问题,可以借助该SQL去解决,希望能帮助到大家。

  1. select count(1)  
  2.   from (select t.*, rownum rnum  
  3.           from (select t.quarter  
  4.                   from 表名 t  
  5.                  where t.quarter <= '201103'  
  6.                  group by t.quarter  
  7.                  order by t.quarter desc) t) t  
  8.  where (to_number(substr('201103', 0, 4)) -  
  9.        to_number(substr(t.quarter, 0, 4))) * 4 +  
  10.        ((to_number(substr('201103', 5, 6)) + 1 -  
  11.        to_number(substr(t.quarter, 5, 6)))) = t.rnum  
  12.    and t.rnum = rownum  

 

说明:季度存放格式201001,表示2010年1季度,以此类推。

另也可以使用row_number() over(order by t.quarter desc)减少一层select,代码如下:

  1. select count(1)  
  2.   from (select row_number() over(order by t.quarter desc) rnum,  
  3.                t.quarter  
  4.           from 表名 t  
  5.          where t.quarter <= '201103'  
  6.          group by t.quarter  
  7.          order by t.quarter desc) t  
  8.  where (to_number(substr('201103', 0, 4)) -  
  9.        to_number(substr(t.quarter, 0, 4))) * 4 +  
  10.        ((to_number(substr('201103', 5, 6)) + 1 -  
  11.        to_number(substr(t.quarter, 5, 6)))) = t.rnum  
  12.    and t.rnum = rownum;  

 

至于rownum和row_number() 在使用上的区别,本人建议还是直接使用原生态的rownum,因为这样子的效率是最高的。

分享到:
评论

相关推荐

    oracle中利用关键字rownum查询前20名员工信息及rownum用法

    注意:对 rownum(伪列) 只能使用 &lt;...如果直接按如下查询得下图结果,显然不正确的,rownum(伪列)  是按查询顺序来排列的,应当先查询筛选排好列,再查询例如上例  查询法; Select rownum,first_name,sa

    ROWNUM的使用技巧

    为了避免这些问题,我们可以使用子查询和 ROWNUM 结合来实现 Top N 结果输出。例如: ```sql select * from ( select a.*, rownum as rn from ( select * from css_bl_view a where capture_phone_num = ...

    对于 Oracle 的 rownum 问题

    可如果用 select rownum,c1 from t1 where rownum &gt; 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一些记录,...

    oracle rownum 学习

    Oracle ROWNUM是Oracle系统顺序分配的行号,用于限制查询返回的总行数。ROWNUM是一个伪字段,不能以任何表的名称作为前缀。下面是对ROWNUM的详细讲解: 一、ROWNUM的基本用法 ROWNUM是一个伪字段,用于限制查询...

    Oracle利用rownum查询出部分数据[归类].pdf

    在Oracle数据库中,`ROWNUM`是一个非常重要的概念,它是一个伪列,用于标识查询结果集中每一行的位置。`ROWNUM`的值从1开始,每次查询时都会为每行新生成一个递增的整数。然而,`ROWNUM`的行为并不总是如我们所预期...

    ORACLE 中ROWNUM用法总结

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`&gt;`, `&gt;=`, `=`等)时,容易引发...

    rownum用法(不使用minus)

    `rownum` 的主要用途之一是用于实现分页查询,即控制查询结果的数量。 #### 二、rownum与查询条件 **1. 等于某值的查询条件** 使用 `rownum = n` (n 为某个正整数) 的方式来限制查询结果时需要注意: - **rownum...

    oracle rownum和distinct

    很多人认为 ROWNUM 是在查询结果集整个返回后再分配的顺序编号,但实际上 ROWNUM 是在 Oracle 系统顺序分配的,从查询返回的第一行分配的是 1,第二行是 2,依此类推。这样,ROWNUM 可以用于限制查询返回的总行数。 ...

    oracle rownum 的使用 和sqlserver有区别的!

    在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、排序或者统计特定范围内的记录时尤为重要。本文将...

    oracle-rownum用法

    ROWNUM 可以用于限制查询返回的总行数,但需要注意的是,ROWNUM 不能以任何表的名称作为前缀。 等于某值的查询条件 在使用 ROWNUM 时,需要注意的是,ROWNUM 的编号从 1 开始,但是在做等于判断时,认为 1 以上的...

    Oracle rownum.docx

    Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中起到限制返回结果数量和进行特定行选择的作用。ROWNUM是一个伪列,表示从查询结果中返回的每一行的序列号,从1开始递增。 首先,当使用ROWNUM等于某个特定值...

    oracle的rownum用法

    Oracle的`ROWNUM`是一个伪列,它在查询结果集中自动添加,并从1开始为每一行赋予一个唯一的数字。在处理大数据集时,`ROWNUM`常用于限制返回的行数,实现分页或者筛选特定范围的记录。然而,正确理解和使用`ROWNUM`...

    解析oracle的rownum

    Oracle 中的 ROWNUM 是一个伪列,用于对查询返回的行进行编号,返回的第一行分配的是 1,第二行是 2,以此类推。这个伪列可以用于限制查询返回的总行数。下面我们将通过实例来详细解析 ROWNUM 的使用方法和技巧。 ...

    解析rownum

    因此,如果你需要按特定顺序分页,必须先`ORDER BY`,再用`ROWNUM`。 5. **分页查询优化**: 在实际应用中,为了提高性能,我们通常使用`ROWNUM`配合`BETWEEN`来实现分页。例如,获取第m到n行的数据,可以这样写:...

    rowid与rownum区别

    ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。

    Oracle中rownum的使用

    Oracle中rownum的使用

    oracle中rownum的用法及解说

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,它可以帮助用户在查询结果集中为每一行分配一个唯一的行号。`ROWNUM`的值从1开始,并随着行的增加而递增。下面将详细介绍`ROWNUM`的基本用法及其在不同场景下的...

    关于oracle的rownum

    3. 如果你想得到表中后面 10 条记录,可以使用嵌套语句,先生成 ROWNUM,然后对他进行查询。 例如,select * from (select rownum as rn,t1.* from a where ...) where rn &gt; 10。 另外,rowid 与 rownum 虽然都...

    Oracle中ROWNUM的使用技巧.docx

    为了避免这个问题,可以先对查询结果进行排序,然后在外部查询中使用ROWNUM,如子查询或连接。 2. **分页查询**:ROWNUM可用于实现分页查询,展示数据的特定页码。一个常见方法是使用嵌套查询,先为所有记录分配...

Global site tag (gtag.js) - Google Analytics