`

Oracle中range的使用

阅读更多
-- 需求:求出下表的一个小时内id个数的最大值和最小值。
SQL> WITH t AS (
  2  SELECT 1 "id",TO_DATE('2011-04-27 14:05:12','yyyy-mm-dd hh24:mi:ss') c_time FROM DUAL UNION ALL
  3  SELECT 2,TO_DATE('2011-04-27 15:10:42','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
  4  SELECT 3,TO_DATE('2011-04-27 15:20:52','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
  5  SELECT 4,TO_DATE('2011-06-27 15:12:12','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
  6  SELECT 5,TO_DATE('2011-06-27 15:25:52','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
  7  SELECT 6,TO_DATE('2011-06-27 15:32:12','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
  8  SELECT 7,TO_DATE('2011-06-28 15:25:42','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
  9  SELECT 8,TO_DATE('2011-07-11 15:25:42','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
 10  SELECT 9,TO_DATE('2011-07-11 15:25:42','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
 11  SELECT 10,TO_DATE('2011-07-22 15:25:42','yyyy-mm-dd hh24:mi:ss') FROM DUAL UNION ALL
 12  SELECT 11,TO_DATE('2011-07-23 15:25:42','yyyy-mm-dd hh24:mi:ss') FROM DUAL
 13  )
 14  SELECT "id",TO_CHAR(c_time,'yyyy-mm-dd hh24:mi:ss') FROM t ORDER BY 2;

        id TO_CHAR(C_TIME,'YYYY-MM-DDHH24:MI:SS')
---------- --------------------------------------
         1 2011-04-27 14:05:12
         2 2011-04-27 15:10:42
         3 2011-04-27 15:20:52
         4 2011-06-27 15:12:12
         5 2011-06-27 15:25:52
         6 2011-06-27 15:32:12
         7 2011-06-28 15:25:42
         8 2011-07-11 15:25:42
         9 2011-07-11 15:25:42
        10 2011-07-22 15:25:42
        11 2011-07-23 15:25:42
-- 使用分析函数,range
SELECT t."id",
       TO_CHAR(c_time, 'yyyy-mm-dd hh24:mi:ss'),
       COUNT(*) OVER(ORDER BY c_time RANGE BETWEEN CURRENT ROW AND INTERVAL '1' hour following) cnt
  FROM t;
-- 其中range表示范围,between...and 表示之前的范围和之后的范围
-- CURRENT ROW表示当前行,INTERVAL '1'表示一个小时
-- 结果如下:
        id C_TIME                                        CNT
---------- -------------------------------------- ----------
         1 2011-04-27 14:05:12                             1
         2 2011-04-27 15:10:42                             2
         3 2011-04-27 15:20:52                             1
         4 2011-06-27 15:12:12                             3
         5 2011-06-27 15:25:52                             2
         6 2011-06-27 15:32:12                             1
         7 2011-06-28 15:25:42                             1
         8 2011-07-11 15:25:42                             2
         9 2011-07-11 15:25:42                             2
        10 2011-07-22 15:25:42                             1
        11 2011-07-23 15:25:42                             1

-- 最终的sql:
SELECT MIN(cnt) min_hour,
       MAX(cnt) max_hour
  FROM (SELECT COUNT(*) over(ORDER BY c_time RANGE BETWEEN CURRENT ROW AND INTERVAL '1' hour following) cnt
          FROM t)
-- 结果:
  MIN_HOUR   MAX_HOUR
---------- ----------
         1          3
分享到:
评论

相关推荐

    Oracle 9i、10g、11g通用的Range分区自动扩展存储过程

    分享一个自己编写的Oracle 9i、10g、11g通用的Range分区自动扩展存储过程,可以在输入相应参数后自动实现RANGE表分区的扩展,推荐在数据仓库、经营分析等OLAP数据库中使用。

    oracle 日期的处理大全

    oracle中日期处理大全 oracle中日期处理大全

    Oracle使用新List分割方法

    但是range分割需要标量数值,而list分割允许使用非标量数值。不像range分割需要一个NUMBER或者DATE标量值,list分割可以用于根据你想用的任何值来分割数据。list分割为大型Oracle表增加了很大的灵活性,而且在进行...

    Oracle分析函数中文+英文【英文非中文的配套】

    1、oracle分析函数 中文: 主要含: rank() 和 dense_rank() first_value()和last_value() row_number() LAG() range开窗函数 2、oracle分析函数 英文: 比较详细

    Oracle SQL Developer 2.1

    Oracle SQL Developer is a relatively new product included in the range of Oracle products. It was frst introduced to the world in September 2005, by its code name Project Raptor. Raptor is a name ...

    oracle 11g安装配置

    使用service工具来启动、停止、重启oracle服务 SHAPE \* MERGEFORMAT 逻辑备份与恢复 配置Oracle备份目录 创建本地目录(如 /opt/mydbbackup),并调整属性 在SQL>环境中指定备份位置,并授权备份用户 [root@...

    Oracle10个分区和Mysql分区区别详解

    Oracle10g分区常用的是:range(范围分区)、list(列表分区)、hash(哈希分区)、range-hash(范围—哈希分区)、range-list(列表—复合分区)。 Range分区:Range分区是应用范围比较广的表分区方式,它是以列的...

    linux环境下oracle10g安装

    linux环境下oracle10g安装 1.连接putty 2.用root登录后建立用户和组 新增oinstall、dba用户组,oracle用户 [root@oracle10g /]# groupadd oinstall [root@oracle10g /]# groupadd dba [root@oracle10g /]# useradd ...

    springmvc+mybatis+bootstrap框架+oracle数据库

    springmvc+mybatis+bootstrap框架+oracle数据库 1、兼容BootStrap,兼容Jquery UI。所以可以用bootstrap和jqueryui的功能。当然还有jquery了。 2、图标使用font awesome 3.2,可以使用字体图标 3、表格可以用...

    oracle分析函数在BI分析中应用事例

    分析函数应用: 1、 结构:聚合函数()over( partition by 字段1,字段2,字段3 order by 字段 desc/asc ...Range 可以使用range 100 preceding 也可跟between and 2、主题分析使用较多的分析函数讨论 Ⅰ、排序分析

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    Redhat as4 上安装oracle10g

    2、创建安装数据库时所需要使用的用户组oinstall,dba及Oracle用户,并将oinstall,dba组定义成oracle用户的主次组。命令参考如下: # groupadd oinstall # groupadd dba # useradd -g oinstall -G dba oracle (设定...

    oracle partition table

    oracle partition table: range partitioned table. list partitioned table; hash partitioned table

    非常全的oracle文档

    24.3. 范围分区(Range) 161 24.4. 列表分区(List) 164 24.5. 散列分区(Hash) 165 24.6. 组合范围散列分区 167 24.7. 复合范围散列分区 168 24.8. 维护表分区 169 二十四、 PL/SQL基础 173 24.1. PL/SQL概述 173 ...

    Oracle甲骨文Linux OL8.0 Vagrant VirtualBox虚拟机亲测可用

    Application Streams provides a range of applications that were previously distributed in Software Collections, as well as other products and programs, that can run within the user space.

    Oracle分区技术介绍

    An ad-hoc query that requires only rows that correspond to a single partition (or range of partitions) can be executed using a partition scan rather than a table scan. For example, a query that ...

    详解oracle 10g的分区

    包括表分区方法、索引分区方法。 范围分区(range partitioning); 哈希分区(hash partitioning); 列表分区(list partitioning); 范围-哈希组合分区(composite range-hash ...11g中自动增加新分区。

    Oracle JDeveloper 11gR2 Cookbook(PACKT,2012)

    Oracle's Application Development Framework (ADF) for Fusion Web Applications leverages Java EE best practices and proven design patterns to simplify constructing complex web solutions with JDeveloper,...

    CERT Oracle Secure Coding Standard for Java(后缀文件丢失,自行添加.rar查看)

    可能每个人都曾经有过中病毒的经历,这就是一种安全问题。国际安全组织也会频繁发布CERT安全报告。 实际上,如果在编程时就考虑安全问题,那么你的程序在面对病毒等安全威胁时就会健壮得多。 本书是关于Java编码时应...

    Expert Oracle Database Architecture 2nd Edition

    confidently say things like “we should use a range partitioned IOT with these columns in the overflow for this table because … .” Tom combines three things in this book: a conversational style ...

Global site tag (gtag.js) - Google Analytics