比如有一个数据表visitor,有这些字段和数据:
Ip                     vdate
127.0.0.1        2007-6-13 8:30:25
127.0.0.1        2007-7-13 9:30:25
127.0.0.1        2007-8-13 10:30:25
我需要统计在9点~10点钟的平均访问人次,我想分两个步骤可以完成该功能:
1、查询9点~10点钟的访问人次
select to_char(vdate,'yyyy-mm-dd')
sum(case when to_number(to_char( vdate,'hh24' ))>9 and to_number(to_char( vdate,'hh24' ))<=10 then 1 else 0 end) 9~10
from VISITOR
group by to_char(vdate,'yyyy-mm-dd')
2、将以上查询结果求平均值我想把以上两点合并成一个SQL语句,不知道怎样写,请高手指教

解决方案 »

  1.   

    我这几天常常遇到需要先对数据表查询,然后对查询后返回的记录结果再进行Count或是avg操作。
    而且在一个地方还需要在where子句中用到另一个表的查询记录集,我想这应该是一个普遍问题吧
      

  2.   

    我说错了,Sorry,我是想按每天的那个时段来求IP个数的平均值
      

  3.   

    select avg(tt.times) from
    (select to_char(vdate,'yyyy-mm-dd'),
    sum(case when to_number(to_char( vdate,'hh24' ))>=9 and 
    to_number(to_char( vdate,'hh24' ))<=10 then 1 else 0 end) 
     as times
    from VISITOR
    group by to_char(vdate,'yyyy-mm-dd')) tt