数据结构类似

SQL> select * from t;

B                 E                 N
----------------- ----------------- --------------------
20150106 01:00:02 20150106 01:00:42 A
20150106 01:00:02 20150106 01:00:12 B
20150106 02:01:02 20150106 01:10:03 C
20150106 02:01:07 20150106 02:01:08 D
20150106 02:00:01 20150106 02:00:02 E
20150106 01:00:03 20150106 01:00:07 F

6 rows selected.

 
数据表定义
SQL> @desc t
           Name                            Null?    Type
           ------------------------------- -------- ----------------------------
    1      B                                        DATE
    2      E                                        DATE
    3      N                                        VARCHAR2(10)
 
需求抽象
以分钟为单位统计指定天每分钟内N的个数。
 
思路:
1、每天1440分钟,构造全天的分钟集合
SELECT to_date('20150106 00:00:00' , 'yyyy-mm-dd hh24:mi:ss') +
         numtodsinterval (level , 'minute') dt
    FROM dual
 
2、左外连接,条件 dt >= begin and dt < end + 1
 
3、需要截取t.begin 和 t.end到分钟
对于begin , trunc(begin,'mi')
对于end   , trunc(end+ numtodsinterval(1, 'minute'),'mi'))  // trunc( end + 1 ,[format])
 
4、按分钟聚合统计
 
 
结果
WITH each_minute AS
 ( SELECT to_date( '20150106 00:00:00' , 'yyyy-mm-dd hh24:mi:ss' ) +
         numtodsinterval (level , 'minute') dt
    FROM dual
 )
SELECT trunc (em.dt, 'mi') d, count (t.n) cnt
  FROM each_minute em
  LEFT OUTER JOIN t
 , 'minute'), 'mi' ))
group by trunc(em.dt, 'mi' )
;
 
简单测试
SQL> WITH each_minute AS
  2   (SELECT to_date('20150106 00:00:00', 'yyyy-mm-dd hh24:mi:ss') +
  3           numtodsinterval(level, 'minute') dt
  4      FROM dual
  5    CONNECT BY level <= 24 * 60)
  6  SELECT trunc(em.dt, 'mi') d, count(t.n) cnt
  7    FROM each_minute em
  8    LEFT OUTER JOIN t
  9      ON (em.dt >= trunc(t.b, 'mi') AND
10         em.dt < trunc(t.e + numtodsinterval(1, 'minute'), 'mi'))
11   where t.n is not null   -- no need for 1440,just for test.
12   group by trunc(em.dt, 'mi')
13   order by 1;

D                        CNT
----------------- ----------
20150106 01:00:00          3
20150106 02:00:00          1
20150106 02:01:00          1

Oracle query that count connections by minute with start and end times provided的更多相关文章

  1. paip.oracle query export to insert sql

    paip.oracle query export to insert sql 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http:/ ...

  2. Oracle Function:COUNT

    Description The Oracle/PLSQL COUNT function returns the count of an expression. The COUNT(*) functio ...

  3. Oracle基础之count(1)和count(*)的区别

    在数据库中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理. 我在网上看到一些所谓的优 ...

  4. Oracle nal() 和count(*)的注意点

    select count(*) into fhave from tab_ppxuser where name = userstr;和select nvl(hphotourl, '0') into ph ...

  5. oracle query

    不等值连接查询 员工工资级别 select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losa ...

  6. Too many parameters: expected 1, was given 2 Query: SELECT count(id) FROM `user` WHERE username = ?; Parameters: [org.apache.commons.dbutils.handlers.ScalarHandler@453da22c, [李明]]

    public Object getValue(String sql,Object... args) { Connection conn = null; Object obj= null; try { ...

  7. Where does Oracle SQL Developer store connections? oracle SQL Developer 连接信息保存的位置,什么地方

    oracle SQL Developer 连接信息保存的位置,在什么地方? 在切换登录用户后,oracle SQL Developer 连接信息不见了.只要以前的用户信息还存在,可以在路径 C:\Us ...

  8. Oracle 组函数count()

    1.count() 函数的参数除了可以是字段值和表达式外,还可以是“ * ”.如果是字段值或表达式,则忽略空值且考虑重复值:如果是“ * ”,则计算所有的行,也包括空值.如果要查询某字段非重复值的个数 ...

  9. mysql quick query row count using sql

    1. command show table status like '{table-name}'; 2. sample mysql> use inventory; Database change ...

随机推荐

  1. 【poj 1724】 ROADS 最短路(dijkstra+优先队列)

    ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12436 Accepted: 4591 Description N ...

  2. DM8168 dead JTAG clock

    针对新板调试,不针对EVM板. TI XDS560连上DM8168 20pin仿真接口 launch 8168.ccxml,右击CortexA8,选择Connect Target 出现错误例如以下: ...

  3. jsp ajax 数据库Demo

    转自:http://blog.csdn.net/rushkid02/article/details/7515058 下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验(校验方式 ...

  4. [置顶] Snow的追寻

    题目描述 Snow终于得知母亲是谁,他现在要出发寻找母亲. 王国中的路由于某种特殊原因,成为了一棵有n个节点的根节点为1的树,但由于"Birds are everywhere.", ...

  5. JSP-Runoob:JSP 隐式对象

    ylbtech-JSP-Runoob:JSP 隐式对象 1.返回顶部 1. JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对 ...

  6. JS连续滚动幻灯片:原理与实现

    什么是连续滚动幻灯片?打开一些网站的首页,你会发现有一块这样的区域:一张图片,隔一段时间滑动切换下一张:同时,图片两端各有一个小按钮,供你手动点选下一张:底部有一排小圆圈,供你选定特定的某帧图片.这就 ...

  7. Kafka详解与总结(五)

    Kafka持久化 1. 概述 Kafka大量依赖文件系统去存储和缓存消息.对于硬盘有个传统的观念是硬盘总是很慢,这使很多人怀疑基于文件系统的架构能否提供优异的性能.实际上硬盘的快慢完全取决于使用它的方 ...

  8. ACM_填格子

    填格子 Time Limit: 2000/1000ms (Java/Others) Problem Description: 在一个n*n格子里边已经填了部分大写字母,现在给你个任务:把剩下的格子也填 ...

  9. UNIX环境高级编程--2

    UNIX标准及实现 ISO C: 国际标准化组织(International Organization for standardization , ISO)ISO C标准的意图是提供C程序的可移植性, ...

  10. 如何防止SQL注入式攻击

    一.什么是SQL注入式攻击?  所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或 ...