zoukankan      html  css  js  c++  java
  • Oracle实例之 ---- 统计某段时间数据量

    需求:统计当天的访问量,每五分钟采集一次

    表结构中有日期字段,类型TIMESTAMP

    如果,统计是采用每秒/分钟/小时/天/周/月/年,都非常容易实现,只要to_char日期字段然后group by分组即可

    但是:如果是X秒/分钟/小时/天/周/月/年 and X>1,就需要变通实现,方法如下:

    SELECT TO_CHAR(B.T_CRT_TM, 'YYYY'), COUNT(*)
      FROM ZSSYS.WEB_PLY_BASE B
     GROUP BY  TO_CHAR(B.T_CRT_TM, 'YYYY')
     
    ----------------------------
    SELECT TO_CHAR(B.T_CRT_TM, 'yyyy-MM'), COUNT(*)
      FROM ZSSYS.WEB_PLY_BASE B
     GROUP BY  TO_CHAR(B.T_CRT_TM, 'yyyy-MM')
    
    ----------------------------
    SELECT TO_CHAR(B.T_CRT_TM, 'yyyy-MM-dd hh24') AS DATE_PLY, COUNT(*) AS COUNT_PLY
      FROM ZSSYS.WEB_PLY_BASE B
      WHERE B.T_CRT_TM >TO_DATE('2016-01-01','yyyy-MM-dd')
     GROUP BY TO_CHAR(B.T_CRT_TM, 'yyyy-MM-dd hh24')
     ORDER BY COUNT_PLY DESC
    
    ------------------------
    select count(tmp.c_ply_no) totalNum,tmp.newTime
    from(
      select b.c_ply_no,
             to_char(b.t_crt_tm,'YYYY-MM-DD HH24:MI:SS') oldTime, -- 原来的时间
             case when substr(to_char(b.t_crt_tm,'mi'),2,1)<5 then to_char(b.t_crt_tm,'yyyymmddhh24')||substr(to_char(b.t_crt_tm,'mi'),1,1)||0
             else to_char(b.t_crt_tm,'yyyymmddhh24')||substr(to_char(b.t_crt_tm,'mi'),1,1)||5 end as newTime  -- 时间段伪列     
      from web_ply_base b
      where b.t_crt_tm >= TO_DATE('2018-01-01','yyyy-MM-dd')
      order by b.t_crt_tm asc
    ) tmp
    group by tmp.newTime
    order by totalNum desc
     
    【Quality】 Quality is the value to someone who matters。做测试,首先要找到这个someone是谁,以及这个 someone重视的 value是什么。
  • 相关阅读:
    pyinstall打包工具
    python中用xlsxwriter创建图表
    python打包工具 cx_Freeze介绍
    JavaScript、Dom和jQuery
    MHA原理
    mysql-mmm实现高可用和部署时须要考虑的问题
    jquery中attr和prop的区别
    FLUSH TABLES WITH READ LOCK 获取锁的速度
    Python Memcached、Redis & RabbitMQ使用
    innodb_flush_log_at_trx_commit
  • 原文地址:https://www.cnblogs.com/liuyitan/p/10239266.html
Copyright © 2011-2022 走看看