一段oracle中的“复杂”分组统计sql

要求:

呼叫系统(Call Center)每天会有大量的电话进线数据,领导们要查看每天的进线数汇总,并且要求把 每天从上午8点到上午12点以及下午2点到晚上8点这两个时间段的数据汇总 “视”为当天的数据。--即分组依据
 

思路:把时间段折分成连续二段,一段是从当天08:00到11:59分的数据,一段是当日12:01到19:59分的数据,然后用union all合并起来,最后再用sum求和

代码

select sum(总数) 总数,时间 from (
  select 
    count(ID) 总数, 
    to_char(CallDateTime,'yyyy-mm-dd') 时间 
  from 
    T_Test t 
  where to_char(CallDateTime,'hh24')>='08' and to_char(CallDateTime,'hh24')<='11'
  group by to_char(CallDateTime,'yyyy-mm-dd')

  union all 

  select 
    count(ID) 总数, 
    to_char(CallDateTime,'yyyy-mm-dd') 时间 
  from 
    T_Test t 
  where to_char(CallDateTime,'hh24')>='12' and to_char(CallDateTime,'hh24')<='19'
  group by to_char(CallDateTime,'yyyy-mm-dd')
)
group by 时间
order by 时间

 

时间: 2024-09-23 23:54:42

一段oracle中的“复杂”分组统计sql的相关文章

数据-请大神用oracle中存储过程的自动统计+JOB为我解答问题

问题描述 请大神用oracle中存储过程的自动统计+JOB为我解答问题 比如我有两张表A和B,我想每隔一个小时统计一下"FLOW"这个字段的所有数据的总和,然后将结果保存到B表中的"FLOW_SUM"字段中?我想用存储过程中的自动统计+JOB写,各位大神,求解答,最好写出sql语句来 解决方案 我已经解决了!!!!!!!!!!!!!!!!!!! 解决方案二: 给你个提示想一想 触发器

oracel-如何把下面的oracle中的存储过程转换成sql的?

问题描述 如何把下面的oracle中的存储过程转换成sql的? create or replace procedure BJ_MAXCASENO_Get(InCount in number, OutMaxCaseNO out number) as tem number; begin select max(caseno) into tem from BJ_MAXCASENO; if tem is null then tem := 0; -- 没有数据时新增0进入 insert into BJ_MA

oracle中的connect by 在sql server中实现

1.Oracle中:select org_idfrom organizationsstart with org_id= :org_idconnect by prior org_id=supervision_org_idorder by supervision_org_id 2.Sql Functiong:FunctionNo SubFunctionNo SubFunctionType 01. systemadmin Privilege 0 01. systemadmin subsysadmin

Oracle中存储过程执行大的Sql语句时如何查看sql是否正确

  在Oracle中编写一个存储过程中,有时会用到较大的sql语句,但是通过PL/sql工具Test查看时又不能看到sql的样子,通过查看发现可以通过Oracle的物理临时表来处理, 在存储过程中添加DBMS_OUTPUT.put_line('要输出的Sql语句'); 然后在PL/sql工具中选中存储过程,右键选择Test执行,执行完成后可以通过DBMS_OUTPUT窗口查看sql结果了,很实用的

Oracle中备份表的简单sql命令语句_oracle

复制代码 代码如下: create table bmpforest.E_PKG_ATPCFG_BAC as select * from bmpforest.e_pkg_atpcfg where 1=2 insert into E_PKG_ATPCFG_BAC select * from E_PKG_ATPCFG;

oracle-Oracle中如何只用一条sql语句查询下面的例子

问题描述 Oracle中如何只用一条sql语句查询下面的例子 解决方案 select_statement UNION [ALL] selectstatement [UNION [ALL] selectstatement][-n]其中selectstatement为待联合的SELECT查询语句.用联合查询足以 解决方案二: 这个只能在后台代码判断并组装语句,然后联表查询 解决方案三: Oracle SQL语句查询例子用一条SQL语句查询分组前三名数据常用的sql语句查询例子

Access中分组统计的实例

access|分组|统计 Access中分组统计的实例 整理自:http://expert.csdn.net/Expert/topic/2727/2727523.xml?temp=.1140711 online 表下有字段: 描述:用户名 版本 是否注册 字段:usr_name ver isreg 现表中有以下记录: aaa cn true bbb cn false ccc en true ddd fr true 结果要求:查询每个版本的注册用户和未注册用户的数目,得出如下结构: 版本 注册数量

sql server-SQLServer 中如何按一定间隔时间分组统计时间段内出现次数

问题描述 SQLServer 中如何按一定间隔时间分组统计时间段内出现次数 我的原始数据是这样的 |ID |time |Status |215CSZ00 |2015/11/30 23:53:41 |2 |21CUG0HB |2015/11/30 23:54:17 |1 |21CUG0HB |2015/11/30 23:54:22 |1 |21UA75CS |2015/11/30 23:54:54 |1 |215CSZ00 |2015/11/30 23:56:17 |2 |21ZCYPUY |20

SQL中FOR XML PATH 语句[可用于分组统计]

FOR XML PATH 语句 :(应该在sql2005及以上版本才能用) declare @t table(id int,name varchar) insert into @t(id,name) values(1,'a') insert into @t(id,name) values(2,'b') select id,name from @t for xml path 运行结果如下: <row> <id>1</id> <name>a</name&g