下面可以说是这类查询的一个模版SQL,如果大家在工作中碰到类似的问题,可以借助该SQL去解决,希望能帮助到大家。
- select count(1)
- from (select t.*, rownum rnum
- from (select t.quarter
- from 表名 t
- where t.quarter <= '201103'
- group by t.quarter
- order by t.quarter desc) t) t
- where (to_number(substr('201103', 0, 4)) -
- to_number(substr(t.quarter, 0, 4))) * 4 +
- ((to_number(substr('201103', 5, 6)) + 1 -
- to_number(substr(t.quarter, 5, 6)))) = t.rnum
- and t.rnum = rownum
说明:季度存放格式201001,表示2010年1季度,以此类推。
另也可以使用row_number() over(order by t.quarter desc)减少一层select,代码如下:
- select count(1)
- from (select row_number() over(order by t.quarter desc) rnum,
- t.quarter
- from 表名 t
- where t.quarter <= '201103'
- group by t.quarter
- order by t.quarter desc) t
- where (to_number(substr('201103', 0, 4)) -
- to_number(substr(t.quarter, 0, 4))) * 4 +
- ((to_number(substr('201103', 5, 6)) + 1 -
- to_number(substr(t.quarter, 5, 6)))) = t.rnum
- and t.rnum = rownum;
至于rownum和row_number() 在使用上的区别,本人建议还是直接使用原生态的rownum,因为这样子的效率是最高的。
相关推荐
注意:对 rownum(伪列) 只能使用 <...如果直接按如下查询得下图结果,显然不正确的,rownum(伪列) 是按查询顺序来排列的,应当先查询筛选排好列,再查询例如上例 查询法; Select rownum,first_name,sa
为了避免这些问题,我们可以使用子查询和 ROWNUM 结合来实现 Top N 结果输出。例如: ```sql select * from ( select a.*, rownum as rn from ( select * from css_bl_view a where capture_phone_num = ...
可如果用 select rownum,c1 from t1 where rownum > 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一些记录,...
Oracle ROWNUM是Oracle系统顺序分配的行号,用于限制查询返回的总行数。ROWNUM是一个伪字段,不能以任何表的名称作为前缀。下面是对ROWNUM的详细讲解: 一、ROWNUM的基本用法 ROWNUM是一个伪字段,用于限制查询...
在Oracle数据库中,`ROWNUM`是一个非常重要的概念,它是一个伪列,用于标识查询结果集中每一行的位置。`ROWNUM`的值从1开始,每次查询时都会为每行新生成一个递增的整数。然而,`ROWNUM`的行为并不总是如我们所预期...
在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`>`, `>=`, `=`等)时,容易引发...
`rownum` 的主要用途之一是用于实现分页查询,即控制查询结果的数量。 #### 二、rownum与查询条件 **1. 等于某值的查询条件** 使用 `rownum = n` (n 为某个正整数) 的方式来限制查询结果时需要注意: - **rownum...
很多人认为 ROWNUM 是在查询结果集整个返回后再分配的顺序编号,但实际上 ROWNUM 是在 Oracle 系统顺序分配的,从查询返回的第一行分配的是 1,第二行是 2,依此类推。这样,ROWNUM 可以用于限制查询返回的总行数。 ...
在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、排序或者统计特定范围内的记录时尤为重要。本文将...
ROWNUM 可以用于限制查询返回的总行数,但需要注意的是,ROWNUM 不能以任何表的名称作为前缀。 等于某值的查询条件 在使用 ROWNUM 时,需要注意的是,ROWNUM 的编号从 1 开始,但是在做等于判断时,认为 1 以上的...
Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中起到限制返回结果数量和进行特定行选择的作用。ROWNUM是一个伪列,表示从查询结果中返回的每一行的序列号,从1开始递增。 首先,当使用ROWNUM等于某个特定值...
Oracle的`ROWNUM`是一个伪列,它在查询结果集中自动添加,并从1开始为每一行赋予一个唯一的数字。在处理大数据集时,`ROWNUM`常用于限制返回的行数,实现分页或者筛选特定范围的记录。然而,正确理解和使用`ROWNUM`...
Oracle 中的 ROWNUM 是一个伪列,用于对查询返回的行进行编号,返回的第一行分配的是 1,第二行是 2,以此类推。这个伪列可以用于限制查询返回的总行数。下面我们将通过实例来详细解析 ROWNUM 的使用方法和技巧。 ...
因此,如果你需要按特定顺序分页,必须先`ORDER BY`,再用`ROWNUM`。 5. **分页查询优化**: 在实际应用中,为了提高性能,我们通常使用`ROWNUM`配合`BETWEEN`来实现分页。例如,获取第m到n行的数据,可以这样写:...
ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。
Oracle中rownum的使用
在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,它可以帮助用户在查询结果集中为每一行分配一个唯一的行号。`ROWNUM`的值从1开始,并随着行的增加而递增。下面将详细介绍`ROWNUM`的基本用法及其在不同场景下的...
3. 如果你想得到表中后面 10 条记录,可以使用嵌套语句,先生成 ROWNUM,然后对他进行查询。 例如,select * from (select rownum as rn,t1.* from a where ...) where rn > 10。 另外,rowid 与 rownum 虽然都...
为了避免这个问题,可以先对查询结果进行排序,然后在外部查询中使用ROWNUM,如子查询或连接。 2. **分页查询**:ROWNUM可用于实现分页查询,展示数据的特定页码。一个常见方法是使用嵌套查询,先为所有记录分配...