数据结构类似

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. Linux下Java线程具体监控和其dump的分析使用----分析Java性能瓶颈[张振华-Jack]

    作者:张振华(Jack) 这里对linux下.sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结: linux环境下,当发现java进程占用CPU资源非常高,且又要想更进一步查出哪一 ...

  2. Bag of word based image retrieval

    主要参考维基百科Bag of Word 在DLP领域里,bow(bag of word)是一个稀疏的向量,向量的每个元素记录词的出现次数,相当于对每篇文章都关于词典做词的直方图统计.同样的道理用在co ...

  3. shell学习三十七天----引用

    引用 案例,假设我想输出一个星号(*),使用echo怎样做? echo * 这是肯定不行的,须要将*转移,即:echo \* 这样就引出了引用的概念.所为引用,是用来防止shell将某些你想要的东西解 ...

  4. Codeforces Round #329 (Div. 2)B. Anton and Lines 贪心

    B. Anton and Lines   The teacher gave Anton a large geometry homework, but he didn't do it (as usual ...

  5. B1818 [Cqoi2010]内部白点 树状数组

    这个题的想法很好想,就是进行排序之后直接检查每个点的上下左右是否有黑点就行.但是直接枚举显然不行,那怎么办呢?我们就用树状数组维护扫描线,把每排左右点看成一条线覆盖,然后从下往上扫,遇到下加一,遇到上 ...

  6. Poj2054 color a tree && [HNOI/AHOI2018]排列

    https://zybuluo.com/ysner/note/1120723 题面 原题 某省选强化题 大致意思是给你一颗树,选父亲后才能选儿子. 每个点对答案的贡献为你在第几次选这个点 × 该点权值 ...

  7. MySQL max_connections 总是 214 。不能设大了? max_connections = 214

    MySQL max_connections 总是 214 .不能设大了? centos7 mariadb 修改 max_connections 总是214 It was indeed limits s ...

  8. 63.ExtJs事件(自定义事件、on、eventManager)示例

    转自:https://blog.csdn.net/leadergg/article/details/5927614?utm_source=blogxgwz5 ExtJs事件(自定义事件.on.even ...

  9. JavaScript 中String和int互相转换

    在javascript里怎么样才能把int型转换成string型 (1) var num = 0;    a = x.toString();    (2) var x = 0;    a = x + ...

  10. [Swift通天遁地]六、智能布局-(3)添加edges/top/bottom/leading/trailing的约束

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...