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
我建议将脚本改为 date
s 而不是时间戳。这将为您提供一个数值结果,将间隔表示为天数,与间隔不同,您可以取平均值。
如果你想要每个月的平均会话持续时间,你可以像这样聚合:
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')
这是我得到的两者的持续时间。
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
我建议将脚本改为 date
s 而不是时间戳。这将为您提供一个数值结果,将间隔表示为天数,与间隔不同,您可以取平均值。
如果你想要每个月的平均会话持续时间,你可以像这样聚合:
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')