SQL МЕСЯЦ СРЕДНЕГО - PullRequest
       25

SQL МЕСЯЦ СРЕДНЕГО

1 голос
/ 29 марта 2020

Вот то, что я получил, чтобы получить продолжительность двух.

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

Я пытаюсь получить среднее значение за месяц. У меня есть измерение времени, к которому я могу обратиться, используя месяц_имя из таблицы. Однако как мне это сделать? Я пытался использовать 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

1 Ответ

0 голосов
/ 29 марта 2020

Я бы предложил превратить сценарии в 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...