table1有以下两个字段:
datetime_begin  (date类型)    (年月天时分秒)
datetime_end    (date类型)    (年月天时分秒)我要做的就是:
sum(datetime_end - datetime_begin) / count(*)但是这样会有问题么?
相加之后,表现为“年月天时分秒”么?这样再求平均值行么?

解决方案 »

  1.   

    avg(datetime_end - datetime_begin)
      

  2.   

    推荐
    day to_number(datetime_end - datetime_begin)
    hour to_number(datetime_end - datetime_begin)*24
    minute to_number(datetime_end - datetime_begin)*24*60
    ......
      

  3.   

    oracle 中,日期类型可以直接相加减。
      

  4.   


    avg(datetime_end - datetime_begin)
      

  5.   

    有没有必要,是楼主真的有这个需求!day to_number(datetime_end - datetime_begin) 
    hour to_number(datetime_end - datetime_begin)*24 
    minute to_number(datetime_end - datetime_begin)*24*60 avg(datetime_end - datetime_begin)...... 
      

  6.   


    /* 3 接通排队等待均长基本语句 */  
    select count(*) into waitNUM
    from tbilllog7 
    where CALLTYPE=0 OR CALLTYPE=5 OR CALLTYPE=13
      and
      DEVICETYPE = 3
      and
      WAITEND-WAITBEGIN>=0
      and
      (WAITBEGIN between '2009-7-1 00:00:00' and '2009-7-2 00:00:00');
      dbms_output.put_line('waitNUM: '|| waitNUM);
    select avg(WAITEND-WAITBEGIN) into waitavgTIME
    from tbilllog7
    where CALLTYPE=0 OR CALLTYPE=5 OR CALLTYPE=13
      and
      DEVICETYPE = 3
      and
      WAITEND-WAITBEGIN>=0
      and
      (WAITBEGIN between '2009-7-1 00:00:00' and '2009-7-2 00:00:00');
      dbms_output.put_line('waitavgTIME: '|| waitavgTIME);
    waitNUM: 3544208
    waitavgTIME: .0000851878340034720811469805885483520397756
    PL/SQL procedure successfully completed.
    上面就是用avg()求出的时间,咋看哟
      

  7.   

    waitavgTIME现在单位是天
    你可以换算成秒啊
    waitavgTIME:=waitavgTIME*24*60*60;
    想转换成年月天时分秒,得自己写个函数
      

  8.   

    在你这个例子中,得对结果,即waitavgTime进行转换成你要的格式
    这么实现应该很简单就能写出来。问题是,月份有的是30天,有的31天,还有28、29天
    你可以写成 天 时 分 秒
    如果对datetime_end - datetime_begin进行转换,就无法进行平均值计算
      

  9.   

    如果你最后想得到天的平均值
    avg(datetime_end - datetime_begin)
    想得到小时 avg(datetime_end - datetime_begin)*24 
    想得秒   avg(datetime_end - datetime_begin)*24*3600 oracle中日期相减都是得到的数值时某天
      

  10.   

    datetime_begin  (date类型)    (年月天时分秒) 
    datetime_end    (date类型)    (年月天时分秒) 这两个字段的值可是‘年月天时分秒’avg(datetime_end - datetime_begin) 得到的是天?
      

  11.   


    没错。日期相减会等于天数,Number型
    相加会出错
      

  12.   

    每一个datetime_end - datetime_begin,时间间隔也就时分秒,
    那么这个天数,就是所有时分秒的和转换成的天数么?
      

  13.   


    waitNUM: 3544208
    waitavgTIME: .0000851878340034720811469805885483520397756
    PL/SQL procedure successfully completed.原来‘waitavgTIME: ’值有个小数点。我说怎么那么样的数字呢。thx all~