`

SQL按时间段统计(5分钟统计一次访问量为例,oracle统计)

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

表结构中有创建日期,类型TIMESTAMP



方案一:临时表/临时存储

统计每5分钟的访问量,存入临时表或者临时存储(比如excel)

循环当天整个时间段

然后对临时表/临时存储的数据做排序



方案二:伪列的SQL查询(数据量小于<1亿数据量,且时间列做索引)

分析:5分钟一次,那就对每条记录做个伪列,每5分钟的数据都是一个标识。

比如:创建时间=201604061200 -至- 201604061204,这五分钟统一标识为201604061200

   创建时间=201604061205 -至- 201604061209,这五分钟统一标识为201604061205

实现起来非常方便:

a. 取出创建时间的分钟参数:to_char(t.create_time,'mi'),都是两位:比如01分,07分,13分,19分....

    只判断第二位,如果第二位<5,统一让分钟的第二位=0,否则(第二位>=5)统一让分钟的第二位=5

    而分钟的第一位不变

    比如01分、04分统一标识为00分,05、06、09分统一标识为05分

    切割字符串使用substr函数

    判断使用case when

    拼接使用||

b.取出创建时间的年月日小时参数,拼装上第一步的特殊分钟参数

  一个伪列就这么诞生了

关键SQL如下:


case when substr(to_char(t.create_time,'mi'),2,1)<5 then to_char(t.create_time,'yyyymmddhh24')||substr(to_char(t.create_time,'mi'),1,1)||0
         else to_char(t.create_time,'yyyymmddhh24')||substr(to_char(t.create_time,'mi'),1,1)||5 end as newTime
上一个完整的sql


select count(tmp.id) totalNum,tmp.newTime
from(
  select t.id,t.latest_status, -- ID,状态
         to_char(t.create_time,'yyyymmddhh24mi') oldTime, -- 原来的时间
         case when substr(to_char(t.create_time,'mi'),2,1)<5 then to_char(t.create_time,'yyyymmddhh24')||substr(to_char(t.create_time,'mi'),1,1)||0
         else to_char(t.create_time,'yyyymmddhh24')||substr(to_char(t.create_time,'mi'),1,1)||5 end as newTime  -- 时间段伪列    
  from acquire_order t
  where t.create_time>=to_date('20160406000000','yyyymmddhh24miss')
  order by t.create_time asc
) tmp
group by tmp.newTime
order by totalNum desc
分享到:
评论

相关推荐

    Oracle SQL自动调优生成报告和SQL语句的脚本

    总的来说,Oracle SQL自动调优是一个综合性的过程,涉及多种工具和技术,目的是最小化查询响应时间,最大化数据库吞吐量。通过熟练掌握这些调优方法,数据库管理员能够有效地解决性能问题,提升系统的整体性能。

    Oracle Sql性能调优.ppt

    Oracle SQL 性能调优是一个非常重要的课题,它涉及到 Oracle 数据库的性能优化,包括 SQL 语句优化、索引使用优化、多表关联查询操作优化、SQL 执行计划优化等。下面是Oracle SQL 性能调优的详细知识点: 1. Oracle...

    oracle SQL优化技巧

    可以增加每次数据库访问的检索数据量,建议值为 200。 6. 使用 DECODE 函数来减少处理时间 使用 DECODE 函数可以避免重复扫描相同记录或重复连接相同的表。 7. 整合简单、无关联的数据库访问 如果你有几个简单的...

    Oracle 高性能SQL优化

    Oracle数据库的高性能SQL优化是数据库管理员和开发人员关注的关键领域,因为它直接影响到系统的响应时间和整体性能。Oracle性能管理是一个持续的过程,包括主动和被动两个方面。主动性能管理强调在系统设计和开发...

    ORACLE中SQL查询优化技术

    2. **使用分区**:将`ORDERS`表按`ORDER_DATE`字段进行范围分区,以便快速定位到特定时间段的数据。 3. **调整初始化参数**:增加`db_buffer_cache`大小,以便更多的数据能够被缓存在内存中,减少磁盘I/O操作。 ###...

    Oracle 常用SQL技巧经典收藏

    例如,如果你需要按部门统计Smith员工的数量和薪水,DECODE函数可以一次性完成,无需分别进行两次查询。DECODE还能应用于GROUP BY和ORDER BY子句,进一步优化查询。 3. **删除重复记录**:删除重复记录时,一种高效...

    oracle统计时间段内每一天的数据(推荐)

    在Oracle数据库中,有时我们需要统计某个时间段内的每一天的数据,这在数据分析、报表生成或业务监控等场景中非常常见。本文将详细介绍如何使用SQL语句实现这一目标,并提供几个实用的示例。 首先,让我们了解一些...

    Oracle+SQL必备参考

    根据给定文件的信息,我们可以推断出这是一本关于Oracle数据库和SQL语言的参考资料书籍。虽然部分内容并未提供具体章节或知识点细节,但基于标题“Oracle+SQL必备参考”及描述中的重复信息,我们可以围绕Oracle...

    Oracle_SQL语句监视器

    7. **历史记录**: 除了实时监控,Oracle SQL语句监视器还记录了过去一段时间内的SQL活动,便于进行趋势分析和问题回溯。 在实际应用中,Oracle SQL语句监视器可以通过以下方式使用: - **调试**: 当遇到性能问题时...

    Oracle数据库SQL优化总结

    Oracle数据库SQL优化是一个关键的技能,对于提升数据库性能和应用响应速度至关重要。以下是一些针对非DBA的Oracle SQL优化技巧: 1. **选择最有效的表名顺序**:在FROM子句中,应将记录最少的表放在最前面,基础表...

    SQLServer数据库导入Oracle

    在IT行业中,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,如从SQL Server迁移到Oracle。这个过程涉及多个步骤和注意事项,确保数据的完整性和一致性。以下是对标题和描述中所述知识点的详细说明: ...

    ORACLE+SQL效率优化.rar

    子查询可能引发多次数据访问,而连接可以通过一次遍历完成。同时,尽量减少对大型表的全表扫描,利用索引来定位数据。 3. **谓词位置**:在WHERE子句中,将选择性高的条件放在前面,可以更快地过滤数据,因为Oracle...

    oracle sql tuning

    通过分区,可以显著提高涉及特定时间段的数据查询效率。 #### 四、总结 Oracle SQL性能调优是一项复杂但必要的工作。通过对查询计划的深入理解和不断实践,可以有效地提升查询性能,从而改善整个系统的响应能力和...

    Oracle 性能优化之 SQL优化

    通过增大ARRAYSIZE参数,可以一次性获取更多数据,从而减少数据库访问次数。 6. **使用DECODE函数减少处理时间** - 当需要根据不同的条件返回不同的结果时,使用DECODE函数可以避免重复扫描相同的记录或连接相同...

    ORACLESQL性能优化全PPT教案.pptx

    Oracle SQL性能优化是数据库管理员和开发人员关注的重要领域,它涉及到如何提高数据库查询速度,减少资源消耗,提升系统整体效率。以下是对Oracle SQL性能优化的一些关键知识点的详细说明: 1. **索引优化**:索引...

    SQL2000将数据导入Oracle9i的方法

    这可能需要一段时间,取决于你要迁移的数据量。在整个过程中,请保持耐心,直到看到“导入成功”的提示。 总的来说,将SQL Server 2000的数据导入Oracle 9i需要细心配置数据库连接,注意大小写问题,并理解如何处理...

    ORACLE 优化sql语句提高oracle执行效率 .doc

    5. 在 SQL*Plus、SQL*Forms 和 Pro*C 中重新设置 ARRAYSIZE 参数:可以增加每次数据库访问的检索数据量,建议值为 200。 6. 使用 DECODE 函数来减少处理时间:使用 DECODE 函数可以避免重复扫描相同记录或重复连接...

    Oracle提高SQL查询效率(SQL优化).doc

    可以增加每次数据库访问的检索数据量,建议值为 200。 六、使用 DECODE 函数来减少处理时间 使用 DECODE 函数可以避免重复扫描相同记录或重复连接相同的表。 七、整合简单的数据库访问 如果有几个简单的数据库...

Global site tag (gtag.js) - Google Analytics