近期接到一个复杂统计的需求,对呼叫中心语音接入流水信息做出统计,要求单位时间内按30秒,60秒,300秒分区间统计接入量,用于进行中心话务运营情况分析,考虑了很长时间,开始是考虑使用游标+循环来做,觉得太复杂和耗时,最后用一句SQL实现了,效果如下:
原始表t_yyjrlsk(语音接入流水库),如下,里面的rq(日期),sj(时间)是我分区间统计的目标列
某时间段按30秒统计结果:
sql语句如下:
select rq,substr(sj,1,6) ||
(
case when b.qjks < 10 then '0' || b.qjks
else '' || b.qjks
end
)
|| '~' || substr(sj,1,6) || b.qjjs as sjqj,count(*)
from t_yyjrlsk a
join (select (level - 1) * 30 as qjks,(level * 30 - 1) as qjjs from dual connect by level <= 2) b
on substr(sj,7,2) >= b.qjks and substr(sj,7,2) <= b.qjjs
where rq >= 20110401 and rq < 20110402 and sj >= '00:00:00' and sj < '03:30:59'
group by rq,substr(sj,1,6),b.qjks,b.qjjs
order by rq,substr(sj,1,6),b.qjks
某时间段按60秒统计结果:
sql语句如下:
select rq,substr(sj,1,2)||':'||substr(sj,4,2)||':00~'||substr(sj,1,2)||':'||substr(sj,4,2)||':59' as sjqj,count(*)
from t_yyjrlsk
where rq >= 20110401 and rq < 20110402 and sj >= '00:00:00' and sj < '03:30:59'
group by rq,substr(sj,1,2),substr(sj,4,2)
order by rq,substr(sj,1,2),substr(sj,4,2)
某时间段按300秒统计结果:
sql语句如下:
select rq,substr(sj,1,2) || ':' ||
(
case when b.qjks < 10 then '0' || b.qjks
else '' || b.qjks
end
)
|| ':00' || '~' || substr(sj,1,2) || ':' ||
(
case when b.qjjs < 10 then '0' || b.qjjs
else '' || b.qjjs
end
)
|| ':59' as sjqj,count(*)
from t_yyjrlsk a
join (select (level - 1) * 5 as qjks,(level * 5 - 1) as qjjs from dual connect by level <= 12) b
on substr(sj,4,2) >= b.qjks and substr(sj,4,2) <= b.qjjs
where rq >= 20110401 and rq < 20110402 and sj >= '00:00:00' and sj < '03:30:59'
group by rq,substr(sj,1,2),b.qjks,b.qjjs
order by rq,substr(sj,1,2),b.qjks
分享到:
相关推荐
在Oracle中用Start with...Connect By子句递归查询
Connect By 可以列出上下级关系 构造序列 求排列组合 逆转求出下上级的关系路径
本文章详细介绍了Oracle中connect by...start with...的用法。
Oracle start with.connect by prior子句实现递归查询
NULL 博文链接:https://freejvm.iteye.com/blog/550858
通过实例比较了 SYS_CONNECT_BY_PATH 和 CONNECT_BY_ROOT 的异同,和返回树形的数据结构
Oracle Connect by
Connect Oracle.有核心代码。无其他功能,只是连接Oracle。
oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的
oracle中的数查询,介绍的详细,有例子。
ORACLE 查询树型关系(connect_by_prior_start_with) Oracle 查询树型关系是指使用 START WITH 和 CONNECT BY 子句来实现 SQL 的层次查询。从 Oracle 9i 开始,可以通过 SYS_CONNECT_BY_PATH 函数实现将父节点到...
with tt as ( select '0' as pid, '1' as id, '1' as name from dual union all select '1' as pid, '2' as id, '2' as name from dual union all select '1' as pid, '3' as id, '3' as name from dual ...
本文中利用例子的形式来解决Oracle巧取指定记录与巧用外关联查询问题。
Oracle 分组统计 Oracle 分组统计是数据库开发中常用的技术之一。它可以根据不同的条件对数据进行分组和聚合统计。分组统计的目的是将数据按照某种条件分组,然后对每个组进行聚合计算,最后输出结果。 分组统计...
java连接oracle数据库的一个代码,,直接复制粘贴就能用
oracle 存储过程实例 oracle存储过程实例
oracle connect by 和 分析函数总结.doc
Oracle复杂查询和索引优化,函数的使用,行列的转换,去重等等
2021年6.29号打包,最新版本:kafka-connect-oracle-1.0.71.jar,用于根据oracle binglog日志同步数据到kafka
复杂sql语句,关于oracle数据库的复杂查询,复杂逻辑关系等等。是个不错的工具