Oracle SQL - Найти среднее время из поля даты и времени по обе стороны от полуночи - PullRequest
1 голос
/ 11 июля 2019

впервые публикует вопрос, поэтому извиняюсь, если не ясно.

Я хочу найти среднее время доставки файлов на основе поля даты и времени генерации по сравнению с датой работы. У меня проблема в том, что файлы могли быть доставлены до или после полуночи, что исключает мои средние значения.

Это набор данных, с которым я тестирую;

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.

см. Выше

см. Выше

1 Ответ

1 голос
/ 11 июля 2019

Делает ли это то, что вы хотите?

avg(generation_date - trunc(business_date))

Я не уверен, почему вы конвертируете похожие даты в date s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...