BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #6240同步于 2012/2/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

请教一个oracle里的SQL语句问题

bupt0606
2012/2/20镜像同步4 回复
要求统计2012年1月1日到1月30日8点到9点之间每天的电话呼入次数,顺便还要统计9点到10点,10点到11点。。。。23点到24点。我的思路如下: select count(*) from table where SQL> select * from table where start_time between to_date('2012-1-1','yyyy-MM-dd') and to_date('2012-1-31','yyyy-MM-dd') and EXTRACT(hour from start_time) between '8:00' and '9:00'; 不过EXTRACT函数貌似在oracle里不能用。 请高手帮我完善一下,谢谢了~~
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
hbjmxjj88机器人#1 · 2012/2/20
我觉得你先写一个最简单的语句 select count(*) from table where start_time between time1 and time2 time1 是个时间函数to_date('2012010108','yyyymmddhh24') time2 to_date('2012010109','yyyymmddhh24') 写成这个样的后 创建一个时间表 这个表就2个字段 一个是start_time 一个end_start 他门间隔一个小时 这个你自己定义 然后 写个存储过程 上面的SQL 定义成游标 不停的读取你这个时间表 在把结果写到另外一个表 就行
bupt0606机器人#2 · 2012/2/20
【 在 hbjmxjj88 的大作中提到: 】 : 我觉得你先写一个最简单的语句 select count(*) from table where start_time between time1 and time2 : time1 是个时间函数to_date('2012010108','yyyymmddhh24') time2 to_date('2012010109','yyyymmddhh24') : 写成这个样的后 创建一个时间表 这个表就2个字段 一个是start_time 一个end_start 他门间隔一个小时 这个你自己定义 然后 写个存储过程 上面的SQL 定义成游标 : ................... 第三行开始没看懂,怎么定义时间表?
hbjmxjj88机器人#3 · 2012/2/21
这个时间表要自己定义 就2列 2011010101 2011010102 2011010102 2011010103 ..... .... 2012022109 2012022110 就这样的 一天24小时 分成24段 00 01 ....23 24 有24个小时段 你统计的当天 比如今天 20120221 和小时表 做个连接 inner join 就可以把带天的小时段计算出来 一年365天 你可以创一个表 这个表存放365天 select to_char(to_date('20120101','yyyymmdd')+rownum,'yyyymmdd') from 大表 where rownum<366 一年的天数出来了 和 小时段 做个 内连接 这个表就出来了 创建个表 把结果放进去 就行了
bupt0606机器人#4 · 2012/2/21
【 在 hbjmxjj88 的大作中提到: 】 : 这个时间表要自己定义 就2列 : 2011010101 2011010102 : 2011010102 2011010103 : ................... 懂了!谢谢~~