Я бы предложил превратить сценарии в date
s вместо отметок времени. Это дает вам числовой результат c, который представляет интервал в днях, который, в отличие от интервала, можно усреднить.
Если вы хотите среднюю продолжительность сеанса в месяц, вы можете агрегировать следующим образом:
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')