впервые публикует вопрос, поэтому извиняюсь, если не ясно.
Я хочу найти среднее время доставки файлов на основе поля даты и времени генерации по сравнению с датой работы. У меня проблема в том, что файлы могли быть доставлены до или после полуночи, что исключает мои средние значения.
Это набор данных, с которым я тестирую;
select ID, business_date, generation_date
from table
where business_date >= to_date('20190705','yyyyMMdd hh24mi') and
subscription_id = 'Report 1'
ID BUSINESS_DATE GENERATION_DATE
Report 1 09/07/2019 09/07/2019 23:02
Report 1 08/07/2019 09/07/2019 01:10
Report 1 05/07/2019 05/07/2019 20:58
Report 1 10/07/2019 10/07/2019 21:54
Дата генерации во втором ряду - после полуночи, поэтому, когда я пробую приведенный ниже код, он выдает неверное среднее значение.
select id,
to_char(trunc(sysdate) +
avg(cast(generation_date as date) - cast(trunc(generation_date) as date))
, 'hh24mi') as ""Average_Delivery_Time""
from table
where a.business_date >= to_date('20190705','yyyyMMdd hh24mi')
and id = 'Report 1'
group by id
ID Average_Delivery_Time
Report 1 16:46:27
Я думал о том, чтобы разделить дату и время, а затем выполнить некоторые расчеты на основе business_date, но я уверен, что должен быть лучший способ найти среднее время (принимая во внимание разные даты).
Правильное среднее время: 22: 46: 26
Буду очень признателен за любую помощь в том, как сделать это в SQL.
см. Выше
см. Выше