精华内容
下载资源
问答
  • Oracle统计一天内每小时数据量。在某小时内有数据,该时间段会被统计出来;该时间段内没有交易,该时间段不会被统计出来,默认为0即可
  • oracle数据库,例如有10年的数据小时一条,想查询所有2月25日16点的数据,有没有那个函数可以用怎么写sql
  • 匹配的数据无法在1天内完成,现在需要统计每小时匹配数据量。 SELECT TO_CHAR(TR.MatchDate, 'mm-dd hh24') AS MD, COUNT(*) AS HOUR_TOTAL FROM result_table_name TR -- result_table_name 所需查询数据的表名 ...

    有一批数据需要完成数据匹配,匹配完成后会在结果表的 MatchDate 字段存储匹配时间。匹配的数据无法在1天内完成,现在需要统计每小时匹配数据量。

    SELECT TO_CHAR(TR.MatchDate, 'mm-dd hh24') AS MD, COUNT(*) AS HOUR_TOTAL
      FROM result_table_name TR -- result_table_name 所需查询数据的表名
     WHERE TO_CHAR(TRUNC(TR.MatchDate), 'yyyy-mm') -- TR.MatchDate 是匹配数据完成时间列,解决时间类型不统一,统一使用 TO_CHAR 来进行类型转换
           = (SELECT TO_CHAR(SYSDATE, 'yyyy-mm') FROM DUAL) -- 获取系统时间
     GROUP BY TO_CHAR(TR.MatchDate, 'mm-dd hh24') -- 通过日期中的“月-日 小时”来进行分组操作
     order by MD;
    
    -- 或
    
    SELECT TO_CHAR(TR.MatchDate, 'mm-dd hh24') AS MD, COUNT(*) AS HOUR_TOTAL
      FROM result_table_name TR -- result_table_name 所需查询数据的表名
     GROUP BY TO_CHAR(TR.MatchDate, 'mm-dd hh24') -- 通过日期中的“月-日 小时”来进行分组操作
     order by MD;
    

    每小时查询结果

    SELECT TO_CHAR(TR.MATCHDATE, 'mm-dd hh24:mi') AS MD, COUNT(*) AS MINUTE_TOTAL
      FROM result_table_name TR -- result_table_name 所需查询数据的表名
     GROUP BY TO_CHAR(TR.MATCHDATE, 'mm-dd hh24:mi') -- 通过日期中的“月-日 小时:分钟”来进行分组操作
     order by MD;
    

    每分钟查询结果

    参考: oracle查询符合当天并查出每个小时中数据的总数量.

    展开全文
  • SELECT TO_CHAR (TE.MODDATE, 'hh24') AS TT, ... T_B_EXACTDETECT TE --所需要查询数据的表名 WHERE TO_CHAR ( TRUNC (TE.MODDATE), 'yyyy-mm-dd') = ( SELECT TO_CHAR (SYSDATE, 'yyyy-m...
    SELECT
    	TO_CHAR (TE.MODDATE, 'hh24') AS TT,
    	COUNT (*) AS TOTAL
    FROM
    	T_B_EXACTDETECT TE                              --所需查询数据的表名
    WHERE
    	TO_CHAR (TRUNC (TE.MODDATE),'yyyy-mm-dd')       --TE.MODDATE是表中的时间列,这里怕时间类型不同意就都用TP_CHAR来进行的一个转换
        = 
      (SELECT TO_CHAR (SYSDATE, 'yyyy-mm-dd') FROM DUAL)    --这句是获取系统时间
    GROUP BY TO_CHAR (TE.MODDATE, 'hh24')                   --通过时间中的小时来进行一个分组操作

    展开全文
  • 表中有开始时间(start_time)和结束时间(end_time) , 我要做的是查询一个日期时间段内(例如2019-10-01 00:00:00至2019-10-31 23:59:59) 的数据 然后再按照一天24小时,统计每数据的开始和结束的时间段在24小时中的...

    ORACLE 将数据按照一天中的24小时进行次数的统计


    #首先我的数据表是这样的
    在这里插入图片描述

    表中有开始时间(start_time)和结束时间(end_time) , 我要做的是查询一个日期时间段内(例如2019-10-01 00:00:00至2019-10-31 23:59:59) 的数据 然后再按照一天24小时,统计每条数据的开始和结束的时间段在24小时中的分布情况,最后已表中的000002为分组字段,生成一条统计数据 ,然后在前端用echers展示,结果如下:
    在这里插入图片描述
    解决方案:
    (1).按照日期和控制器编号查询出要处理的数据
    (2).由于开始和结束时间 有可能两个都在统计的时间段内,也有可能其中一个在要统计的时间段内,所以要再将"(1)"中的数据的开始和结束时间处理下,截掉不在统计时间段内的时间:

    `CASE WHEN B.START_TIME < TO_DATE( '2019-10-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ) THEN TO_DATE( '2019-10-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ) ELSE B.START_TIME END` 
    
    CASE WHEN B.END_TIME > TO_DATE( '2019-11-01 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) THEN TO_DATE( '2019-11-01 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) ELSE B.END_TIME END
    

    (3) 因为我是要按照24小时来统计,所以我这里将时间又处理了下,只取24小时制的小时数,使用:

    TO_CHAR(START_TIME,'HH24') 
    

    (4) 然后我开始从0-23点挨个统计,使用的方法如下,这是统计数据在0点-1点占用的次数,以此类推

     COUNT( CASE WHEN ( A.START_TIME <= 00 AND A.END_TIME >= 00 ) THEN 1 END ) AS count_0,
    

    下面是全部的完整sql 做个记录,你们看看还有没有更好的方法呀

    SELECT
    	CONTROL_NUMBER,
    	COUNT( CASE WHEN ( A.START_TIME <= 00 AND A.END_TIME >= 00 ) THEN 1 END ) AS count_0,
    	COUNT( CASE WHEN ( A.START_TIME <= 01 AND A.END_TIME >= 01 ) THEN 1 END ) AS count_1,
    	COUNT( CASE WHEN ( A.START_TIME <= 02 AND A.END_TIME >= 02 ) THEN 1 END ) AS count_2,
    	COUNT( CASE WHEN ( A.START_TIME <= 03 AND A.END_TIME >= 03 ) THEN 1 END ) AS count_3,
    	COUNT( CASE WHEN ( A.START_TIME <= 04 AND A.END_TIME >= 04 ) THEN 1 END ) AS count_4,
    	COUNT( CASE WHEN ( A.START_TIME <= 05 AND A.END_TIME >= 05 ) THEN 1 END ) AS count_5,
    	COUNT( CASE WHEN ( A.START_TIME <= 06 AND A.END_TIME >= 06 ) THEN 1 END ) AS count_6,
    	COUNT( CASE WHEN ( A.START_TIME <= 07 AND A.END_TIME >= 07 ) THEN 1 END ) AS count_7,
    	COUNT( CASE WHEN ( A.START_TIME <= 08 AND A.END_TIME >= 08 ) THEN 1 END ) AS count_8,
    	COUNT( CASE WHEN ( A.START_TIME <= 09 AND A.END_TIME >= 09 ) THEN 1 END ) AS count_9,
    	COUNT( CASE WHEN ( A.START_TIME <= 10 AND A.END_TIME >= 10 ) THEN 1 END ) AS count_10,
    	COUNT( CASE WHEN ( A.START_TIME <= 11 AND A.END_TIME >= 11 ) THEN 1 END ) AS count_11,
    	COUNT( CASE WHEN ( A.START_TIME <= 12 AND A.END_TIME >= 12 ) THEN 1 END ) AS count_12,
    	COUNT( CASE WHEN ( A.START_TIME <= 13 AND A.END_TIME >= 13 ) THEN 1 END ) AS count_13,
    	COUNT( CASE WHEN ( A.START_TIME <= 14 AND A.END_TIME >= 14 ) THEN 1 END ) AS count_14,
    	COUNT( CASE WHEN ( A.START_TIME <= 15 AND A.END_TIME >= 15 ) THEN 1 END ) AS count_15,
    	COUNT( CASE WHEN ( A.START_TIME <= 16 AND A.END_TIME >= 16 ) THEN 1 END ) AS count_16,
    	COUNT( CASE WHEN ( A.START_TIME <= 17 AND A.END_TIME >= 17 ) THEN 1 END ) AS count_17,
    	COUNT( CASE WHEN ( A.START_TIME <= 18 AND A.END_TIME >= 18 ) THEN 1 END ) AS count_18,
    	COUNT( CASE WHEN ( A.START_TIME <= 19 AND A.END_TIME >= 19 ) THEN 1 END ) AS count_19,
    	COUNT( CASE WHEN ( A.START_TIME <= 20 AND A.END_TIME >= 20 ) THEN 1 END ) AS count_20,
    	COUNT( CASE WHEN ( A.START_TIME <= 21 AND A.END_TIME >= 21 ) THEN 1 END ) AS count_21,
    	COUNT( CASE WHEN ( A.START_TIME <= 22 AND A.END_TIME >= 22 ) THEN 1 END ) AS count_22,
    	COUNT( CASE WHEN ( A.START_TIME <= 23 AND A.END_TIME >= 23 ) THEN 1 END ) AS count_23 
    FROM
    	(
    	SELECT
    		B.CONTROL_NUMBER,
    	TO_CHAR( CASE WHEN B.START_TIME < TO_DATE( '2019-10-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ) THEN TO_DATE( '2019-10-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ) ELSE B.START_TIME END, 'HH24' ) AS START_TIME,
    	TO_CHAR( CASE WHEN B.END_TIME > TO_DATE( '2019-10-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) THEN TO_DATE( '2019-10-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) ELSE B.END_TIME END, 'HH24' ) AS END_TIME 
    FROM
    	H_CHARGE_STATISTIC B 
    WHERE
    	B.CONTROL_NUMBER = '000002' 
    	AND B.START_TIME IS NOT NULL 
    	AND B.END_TIME IS NOT NULL 
    	AND B.TX_POWER != 0.00
    	AND B.RX_POWER != 0.00
    	AND (( B.START_TIME BETWEEN TO_DATE( '2019-10-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ) AND TO_DATE( 2019-10-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) ) 
    	OR ( B.END_TIME BETWEEN TO_DATE( '2019-10-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ) AND TO_DATE( '2019-10-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss' ) ) )
    	) A 
    GROUP BY
    	CONTROL_NUMBER
    
    展开全文
  • Oracle实现查询1小时之内的数据

    千次阅读 2020-07-30 11:06:42
    在做交易项目的时候需要一个定时补偿来把交易异常失败查询一下看交易情况,要求是5分钟跑一次程序,只能查询小时内入库的数据的逻辑比较简单,就贴一个查询语句吧 SELECT * FROM 表名 t WHERE 条件一 AND 条件二...

    在做交易项目的时候需要一个定时补偿来把交易异常失败查询一下看交易情况,要求是5分钟跑一次程序,只能查询一小时内入库的数据的逻辑比较简单,就贴一个查询语句吧

    SELECT  * FROM 表名 t WHERE 条件一 
    AND 条件二
    AND to_char(sysdate-1/24,'YYYYMMDDHH24') <t.time ORDER BY t.时间 DESC
    

    这里我们的时间是yyyyMMddHHmmssSSS的字符串格式
    以此类推
    to_char(sysdate-1/48,‘YYYYMMDDHH24’) <t.time
    就是半小时的
    Oracle还是比较强大的
    还有就是mysql的可以看这篇文章

    Mysql实现查询5分钟之前的数据.

    展开全文
  • 以tool表小时数据为基准,只需要8-16每小时数据。 **数据表“T_IVR_DETAIL_LOG”** ``` SELECT TO_CHAR (CURRENTDT, 'hh24') AS HH, COUNT (*) num FROM T_IVR_DETAIL_LOG WHERE TO_CHAR ( ...
  • oracle 实现按周,月,季度,年查询统计数据 本帖最后由 ada 于 2011-3-7 15:01 编辑 oracle 实现按周,月,季度,年查询统计数据 //按自然周统计 select to_char(date,'iw'),sum() from where ...
  • Oracle统计产生日志&数据增长&增量

    千次阅读 2019-09-24 16:09:59
    文章目录1、如何度量增删改操作产生的日志量2、根据归档日志估算数据增量情况3、DBA_HIST_SYSSTAT计算redo产生量(AWR中profile "redo size")4、根据dba_hist_tbspc_space_usage表空间维度估算容量增长情况5、根据dba...
  • Oracle 按照每小时分组,求每组数量

    千次阅读 2019-09-26 20:21:43
    1. 需求:按照插入时间每小时分为一组,求出每组数量 数据库原始数据类似如图所示: 2. 尝试方法: 本以为可以直接使用 substr () 函数取出表示小时的字段,发现格式竟然变了: 所以想直接简单粗暴的使用 ...
  • 本帖最后由 ada 于 ...oracle 实现按周,月,季度,年查询统计数据 //按自然周统计 select to_char(date,'iw'),sum() from where group by to_char(date,'iw') //按自然月统计 select to_char(date,'mm'),sum()
  • SELECT 字段 FROM 表名 WHERE 时间... //查询一天内的数据 sysdate+1 加一天 sysdate+1/24 加1小时 sysdate+1/(24*60) 加1分钟 sysdate+1/(24*60*60) 加1秒钟 sysdate-1 减一天 sysdate-1/24 减1小时 sysdate-...
  • 处理统计数据的时候,经常会出现这样的情况,条数据记录的时间都是当时时间点的时间戳,但是分析数据的时候,却想把数据按照每天、月等情况来分组。   因此在查询数据的时候,需要用比较巧妙的办法来实现。  ...
  • --按六小时分组 select trunc(to_number(to_char(created_time, 'hh24')) / 6),count(*)  from t_test  where created_time &gt; trunc(sysdate - 40)  group by trunc(to_number(to_char(created_time, 'hh...
  • 最近在工作中遇到一个需求,就是查询一个日期时间段内每天个时段的数据量,着实,研究了一番。想着做个笔记,还是很值得学习的。首先先上一张表的图:设定查询当前时间和10天之前的时段数据个数:select to_char(a...
  • oracle查询小时之内的记录

    千次阅读 2019-08-19 17:22:01
    小时内 select * from table where sysdate-1/48<= column 一小时内 select * from table where sysdate-1/24<= column 一天内 select * from table where sysdate-1 <= column
  • 用户有一需求,要求查询某个时间段内(如2014-05-01 -- 2014-05-31),十二小时的生产数据,8:00--20:00, 20:00--8:00, 所以小弟先建了个临时表,将个时间段都分出来,时间段如下: 2014-5-1 7:01:00 ...
  • 工作需要统计oracle中两个交易表(trade1,trade2)一天中五分钟内的交易条数,表中都有一个time字段精确到秒,现在要根据这个字段统计表中五分钟的交易条数,24个小时统计288次,请问这段逻辑怎么写?...
  • Oracle自动性能统计

    千次阅读 2017-04-13 10:10:15
    高效诊断性能问题,需要提供完整可用的统计信息,好比医生给病人看病的望闻问切,才能够正确的确诊,然后再开出...本文主要描述Oracle性能统计涉及到的相关概念及统计对象,以更好的利用统计信息为性能调整奠定基础。
  • oracle查询两年之间某一个月的数据
  • 统计出 2017-02-17 10:00:00到2017-02-17 10:45:33这段时间内,隔五分钟的数据量 结果如: 2017-02-17 10:05:00 1 2017-02-17 10:10:00 1 2017-02-17 10:15:00 2 2017-02-17 10:20:00 2 2017-02-17 10:25:00 3 ...
  • 求助大神,需要查询表中一行数据小于这个时间戳的这个表中的其他数据的汇总,不适用子查询,有什么其他的解决方式吗?
  • 统计分析主要包括产生表及索引的统计信息 表的统计信息主要包括表的行数,行的...ORACLE执行成本分析时首先取出所应用表及索引的统计数据进行分析,其中数据行数是一个重要的参数,因为ORACLE 在分析表大小时行数...
  • ORACLE 数据字典

    千次阅读 2012-07-08 21:54:46
    Oracle 数据字典
  • oracle隔5分钟统计数量

    千次阅读 2018-04-15 21:28:03
    统计t_tjsj表中按照 cjsj (date类型)5分钟统计0点到1点这个一小时内时间段内的数量: select lpad(floor(to_char(cjsj,'mi')/5)*5,2,0) cjsj, count(bh) num  from t_tjsj where cjsj&gt;to_date('2018-...
  • 今天突然有个需求,说是要统计每天的数据对应生成了多少,对于oracle一贯不熟的话懵逼了,只好查百度 首先将创建日期进行格式化,oracle的时间格式化为 例子:SELECT to_char(SYSDATE,'yyyy"年"mm"月"dd"日...
  • 在做项目的时候经常会有日志统计功能,如果日志量很大的话,使用原表来做统计会很慢,这时我们可以设置一个定时任务,定时的调用存储过程,把前一小时的日志做一下统计,存到hour表里,然后就可以直接用hour表来做...
  • oracle查询语句大全

    千次阅读 2014-10-04 10:59:43
    oracle查询语句大全 oracle 基本命令大全一  1.create user username identified by password;//建用户名和密码oracle ,oracle   2.grant connect,resource,dba to username;//授权 grant connect,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,132
精华内容 7,652
关键字:

oracle查询每小时统计数据