2015-09-04 2 views
1

Я пытаюсь выяснить время avg, когда какая-то конкретная задача будет завершена. Я могу игнорировать дату, потому что задача будет выполняться каждый день.Среднее время в Oracle SQL

Итак, я пытаюсь выяснить, когда работа становится полной на средне как 4:45:50

Мои данные:

28-AUG-2015 01.24.58.000000000 AM 
27-AUG-2015 01.31.33.000000000 AM 
26-AUG-2015 01.28.09.000000000 AM 
25-AUG-2015 01.30.43.000000000 AM 
24-AUG-2015 01.02.46.000000000 AM 
23-AUG-2015 01.18.56.000000000 AM 
22-AUG-2015 01.25.24.000000000 AM 
21-AUG-2015 01.30.07.000000000 AM 
20-AUG-2015 01.25.58.000000000 AM 
19-AUG-2015 01.27.08.000000000 AM 
18-AUG-2015 01.28.12.000000000 AM 
17-AUG-2015 01.27.51.000000000 AM 
16-AUG-2015 01.34.32.000000000 AM 
15-AUG-2015 01.46.10.000000000 AM 
14-AUG-2015 01.56.47.000000000 AM 
13-AUG-2015 01.38.55.000000000 AM 
+0

Учитывая, что данные, как вы получите среднее значение 4:45:50? Являются ли ваши данные «меткой времени»? «Временная метка с часовым поясом»? «Временная метка с местным часовым поясом»? «Varchar2»? «Дата»? Или что-то другое? –

+0

В среднем не 4:45:50, я просто даю пример ответа, который я ищу. Мои данные - это временная метка с местным часовым поясом. США. – user1751356

+0

Благодарим вас за это. – user1751356

ответ

2

Там должен быть лучшим способом, но это должно работать:

select to_char(trunc(sysdate) + 
       avg(cast(your_timestamp as date) - cast(trunc(your_timestamp) as date)) 
       , 'hh:mi:ss PM') 
    from your_table 

шаги:

  1. cast(your_timestamp as date) - cast(trunc(your_timestamp) as date): Рассчитать смещение по времени с полуночи. (Я отбрасываю date, так что арифметика возвращает number вместо interval, что позволяет выполнять шаг №2).
  2. avg(...): получить среднее смещение по времени с полуночи (. Не может сделать avg в течение интервала времени, поэтому я использую date S)
  3. trunc(sysdate) + ...: Построить действительную дату, используя среднее смещение по времени от шага # 2 ,
  4. to_char(..., 'hh:mi:ss PM'): Извлечь временную часть для отображения.
+0

Вы можете [извлечь общее количество секунд от интервала] (http://stackoverflow.com/a/29821049/266304), но та же идея ... Но литье на сегодняшний день потеряет информацию о часовом поясе, что может быть проблемой для данных для дневного света экономия времени переключения? –

Смежные вопросы