`
vvnet
  • 浏览: 116529 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

ORACLE统计连续N天的记录

阅读更多

第一步:排序
SELECT * FROM TABLE1 ORDER BY ID 
第二步:日期-ROWNUM如果相同的话认为他们是连续的,然后GORUP BY一下
SELECT A.*,(SUBSTR(
TO_CHAR(A.RQ,'YYYYMMDD'),0,4)*12+SUBSTR(TO_CHAR(A.RQ,''YYYYMMDD'),5,2) -ROWNUM)  DAYS 

FROM (SELECT * FROM TABLE1 ORDER BY ID) A
第三步:分别求出连续区间,让他们相减求出大于N的值
SELECT B.ID,MAX(B.RQ),MIN(B.RQ), DAYS
FROM (
SELECT A.*,(SUBSTR(TO_CHAR(A.RQ,'YYYYMMDD'),0,4)*12+SUBSTR(TO_CHAR(A.RQ,''YYYYMMDD'),5,2) -ROWNUM)  DAYS 
FROM (SELECT * FROM TABLE1 ORDER BY ID) A  ) B
GROUP BY B.ID, B.DAYS 

HAVING COUNT(*)>N

 

分享到:
评论

相关推荐

    ORACLE 合辑

    - 获取前N条记录,例如:`SELECT * FROM (SELECT ROWNUM rnum, t.* FROM table t ORDER BY some_column) WHERE rnum <= N;` **分页查询:** - 实现分页功能,如:`SELECT * FROM (SELECT ROWNUM rnum, t.* FROM ...

    Oracle DBA日常巡检最佳实践

    **5.7 定期做统计分析对于采用Oracle Cost-Based Optimizer的系统,需要定期对数据对象的统计信息进行采集更新,使优化器可以根据准备的信息作出正确的explain plan。** - **目的**:确保Oracle CBO优化器基于最新...

    Oracle_详解分析函数

    - **`ROW_NUMBER()`**:为每一行分配一个唯一的数字,无论是否有重复值,都会连续编号。 **例:** ```sql SELECT empno, ename, sal, ROW_NUMBER() OVER (ORDER BY sal DESC) AS row_num FROM employees; ```...

    oracle分析函数.doc

    Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,主要用于处理大量数据并进行复杂的统计和分析。它们在OLAP(在线分析处理)系统中尤其重要,因为这类系统常常涉及大规模的数据查询、汇总和复杂的业务...

    oracle分析函数学习

    - Top N和Bottom N用于选取数据集中的前N条或后N条记录,可以结合RANK或ROW_NUMBER实现。 - First/Last函数可以找到每个分组的第一个或最后一个值,这在处理时间序列数据或追踪变化时非常有用。 - NTILE将结果集...

    oracle分析函数全面解析

    - **Top/Bottom N, First/Last, NTile**: 这些函数用于选取数据集中的前N个或后N个记录,`FIRST/LAST`则用于获取每个分组的第一行或最后一行,`NTILE`将数据分割成N个等大小或近似等大小的部分。 **3. 窗口函数** ...

    oracle分析函数

    1. **等级(Ranking)函数**:如`RANK`, `DENSE_RANK`, `ROW_NUMBER`等,用于确定每行在数据集中的相对位置,特别适合于查找前N个记录。 - **RANK**:按指定顺序给行编号,当两行的排序依据相同,它们会获得相同的...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Oracle开发之分析函数总结

    Oracle提供了`SUM()`等统计分析函数,其中`SUM() OVER`允许在窗口内进行求和。`PARTITION BY`子句将数据分割成不同的分区,而`ORDER BY`子句确定了每个分区内的行顺序。`ROWS BETWEEN`或`RANGE BETWEEN`用于定义计算...

    oracle常用sql查询语句部分集合(图文)

    这个用法统计包括当前行在内的前后各一条记录的汇总值,即计算一个3条记录的窗口内的总和。 7. `RATIO_TO_REPORT()` 分析函数: 它返回一个数相对于其分区内所有数的比例。在给出的例子中,展示了每个员工工资占...

    贪婪算法是一个很好的算法大家都应该看一看

    例如,上述的币种统计问题中,我们使用了一个累加器数组S来记录每种币值的使用数量,而算法的实现是一个嵌套循环,时间复杂度为O(n),其中n代表需要支付的工资数目。这体现了贪婪算法的高效性,因为其复杂度与问题...

    sql高级进阶

    - 计算一年中周内各日期的次数:统计一年中各周内某天的出现频率。 - 确定当前记录和下一条记录之间相差的天数:使用数据库的日期差函数。 8. 日期操作 - SYSDATE能得到的信息:解释SYSDATE函数返回的当前系统...

    sql语言快速入门版

    - **Select Top N**:选择表中的前N条记录。 - 示例:`SELECT TOP 10 * FROM product;` - **Select Distinct**:选择表中的不同记录。 - 示例:`SELECT DISTINCT producttype2 FROM product;` - **重命名字段**:...

    2009达内SQL学习笔记

    在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。 SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后...

    sql技术收集3

    除了上述基本概念,还应理解窗口函数(如ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD(), NTILE()等),它们允许在结果集中进行更复杂的分析,比如计算排名、获取前N条记录、计算连续时间段等。 此外,了解...

    数据库工程师面试题

    - `RESTORE DATABASE XXXX FROM DISK = N'XXXX'`:用于从指定的备份文件恢复数据库。 #### 二、简答题知识点解析 1. **Oracle数据库的冷备份与热备份**: - **冷备份**: - 在数据库关闭状态下进行备份。 - ...

    淘宝笔试题

    - 对于`n = 61`,首先将其减1得到`60`,然后连续两次除以2得到`15`,再加1得到`16`,继续除以2直至变为1。 - 总共需要`6`步。 #### 四、货架布置问题 **知识点概述:** 本题考察了逻辑思维能力和商业理解能力。 ...

    经典SQL脚本大全

    │ │ 6.1.2 多表联结导致记录重复的示例.sql │ │ 6.1.3 使用UNION实现库存报表的示例.sql │ │ 6.1.5 按指定上下限区间进行数据统计的示例.sql │ │ 6.1.6 随机出题的示例.sql │ │ 6.2.1 ROLLUP实现的分级...

Global site tag (gtag.js) - Google Analytics