`
- 浏览:
621481 次
- 性别:
- 来自:
上海
-
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
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
总的来说,Oracle SQL自动调优是一个综合性的过程,涉及多种工具和技术,目的是最小化查询响应时间,最大化数据库吞吐量。通过熟练掌握这些调优方法,数据库管理员能够有效地解决性能问题,提升系统的整体性能。
Oracle SQL 性能调优是一个非常重要的课题,它涉及到 Oracle 数据库的性能优化,包括 SQL 语句优化、索引使用优化、多表关联查询操作优化、SQL 执行计划优化等。下面是Oracle SQL 性能调优的详细知识点: 1. Oracle...
可以增加每次数据库访问的检索数据量,建议值为 200。 6. 使用 DECODE 函数来减少处理时间 使用 DECODE 函数可以避免重复扫描相同记录或重复连接相同的表。 7. 整合简单、无关联的数据库访问 如果你有几个简单的...
Oracle数据库的高性能SQL优化是数据库管理员和开发人员关注的关键领域,因为它直接影响到系统的响应时间和整体性能。Oracle性能管理是一个持续的过程,包括主动和被动两个方面。主动性能管理强调在系统设计和开发...
2. **使用分区**:将`ORDERS`表按`ORDER_DATE`字段进行范围分区,以便快速定位到特定时间段的数据。 3. **调整初始化参数**:增加`db_buffer_cache`大小,以便更多的数据能够被缓存在内存中,减少磁盘I/O操作。 ###...
例如,如果你需要按部门统计Smith员工的数量和薪水,DECODE函数可以一次性完成,无需分别进行两次查询。DECODE还能应用于GROUP BY和ORDER BY子句,进一步优化查询。 3. **删除重复记录**:删除重复记录时,一种高效...
在Oracle数据库中,有时我们需要统计某个时间段内的每一天的数据,这在数据分析、报表生成或业务监控等场景中非常常见。本文将详细介绍如何使用SQL语句实现这一目标,并提供几个实用的示例。 首先,让我们了解一些...
根据给定文件的信息,我们可以推断出这是一本关于Oracle数据库和SQL语言的参考资料书籍。虽然部分内容并未提供具体章节或知识点细节,但基于标题“Oracle+SQL必备参考”及描述中的重复信息,我们可以围绕Oracle...
7. **历史记录**: 除了实时监控,Oracle SQL语句监视器还记录了过去一段时间内的SQL活动,便于进行趋势分析和问题回溯。 在实际应用中,Oracle SQL语句监视器可以通过以下方式使用: - **调试**: 当遇到性能问题时...
Oracle数据库SQL优化是一个关键的技能,对于提升数据库性能和应用响应速度至关重要。以下是一些针对非DBA的Oracle SQL优化技巧: 1. **选择最有效的表名顺序**:在FROM子句中,应将记录最少的表放在最前面,基础表...
在IT行业中,数据库迁移是一项常见的任务,特别是在不同的数据库系统之间,如从SQL Server迁移到Oracle。这个过程涉及多个步骤和注意事项,确保数据的完整性和一致性。以下是对标题和描述中所述知识点的详细说明: ...
子查询可能引发多次数据访问,而连接可以通过一次遍历完成。同时,尽量减少对大型表的全表扫描,利用索引来定位数据。 3. **谓词位置**:在WHERE子句中,将选择性高的条件放在前面,可以更快地过滤数据,因为Oracle...
通过分区,可以显著提高涉及特定时间段的数据查询效率。 #### 四、总结 Oracle SQL性能调优是一项复杂但必要的工作。通过对查询计划的深入理解和不断实践,可以有效地提升查询性能,从而改善整个系统的响应能力和...
通过增大ARRAYSIZE参数,可以一次性获取更多数据,从而减少数据库访问次数。 6. **使用DECODE函数减少处理时间** - 当需要根据不同的条件返回不同的结果时,使用DECODE函数可以避免重复扫描相同的记录或连接相同...
Oracle SQL性能优化是数据库管理员和开发人员关注的重要领域,它涉及到如何提高数据库查询速度,减少资源消耗,提升系统整体效率。以下是对Oracle SQL性能优化的一些关键知识点的详细说明: 1. **索引优化**:索引...
这可能需要一段时间,取决于你要迁移的数据量。在整个过程中,请保持耐心,直到看到“导入成功”的提示。 总的来说,将SQL Server 2000的数据导入Oracle 9i需要细心配置数据库连接,注意大小写问题,并理解如何处理...
5. 在 SQL*Plus、SQL*Forms 和 Pro*C 中重新设置 ARRAYSIZE 参数:可以增加每次数据库访问的检索数据量,建议值为 200。 6. 使用 DECODE 函数来减少处理时间:使用 DECODE 函数可以避免重复扫描相同记录或重复连接...
可以增加每次数据库访问的检索数据量,建议值为 200。 六、使用 DECODE 函数来减少处理时间 使用 DECODE 函数可以避免重复扫描相同记录或重复连接相同的表。 七、整合简单的数据库访问 如果有几个简单的数据库...