SQL 月平均

SQL MONTH AVERGE

这是我得到的两者的持续时间。

select (TO_TIMESTAMP(s.END, 'hh24:mi:ss') - TO_TIMESTAMP(s.START, 'hh24:mi:ss')) from SESSION s;

我正在尝试获取每月的平均值。我确实有一个时间维度,我可以使用 table 中的 month_name 来引用它。但是,我该怎么做呢?我试图通过转换来使用 add_months 但没有成功。

谢谢大家

全部为 VARCHAR。

DATE         START      END        RESULT OF QUERY        AVERAGE PER MONTH
13-FEB-11   16:00:00    18:00:00   +00 02:00:00.000000       ?
02-APR-11   08:30:00    10:30:00   +00 02:00:00.000000
02-APR-11   16:00:00    18:00:00   +00 02:00:00.000000
05-APR-11   08:30:00    10:30:00   +00 02:00:00.000000
05-APR-11   16:00:00    18:00:00   +00 02:00:00.000000

我建议将脚本改为 dates 而不是时间戳。这将为您提供一个数值结果,将间隔表示为天数,与间隔不同,您可以取平均值。

如果你想要每个月的平均会话持续时间,你可以像这样聚合:

select 
    trunc(to_date(s.date, 'dd-mon-yy'), 'mm') mnt,
    avg(to_date(s.end, 'hh24:mi:ss') - to_date(t.start, 'hh24:mi:ss')) avg_duration
from session s
group by trunc(to_date(s.date, 'dd-mon-yy'), 'mm')

如果你想要结果作为一个区间,你可以在计算结果上使用numtodsinterval()

select 
    trunc(to_date(s.date, 'dd-mon-yy'), 'mm') mnt,
    numtodsinterval(
        avg(to_date(s.end, 'hh24:mi:ss') - to_date(t.start, 'hh24:mi:ss')),
        'day'
    ) avg_interval
from session s
group by trunc(to_date(s.date, 'dd-mon-yy'), 'mm')