Среднее время / дата / время в моем запросе?Пожалуйста помоги? - PullRequest
0 голосов
/ 16 февраля 2012

Это мой следующий SQL-запрос.

   select a.job_name,endtime,to_char(endtime,'HH24:MI:SS') as endtime_1
   from OPTOOLS.R11_JOB_PROD_VW a, OPTOOLS.R11_JOB_RUNS_PROD_VW b 
   where 
   a.joid=b.joid and a.job_name in ('hh_p_hkc_isrs_gim_trd_ld_bx') and rownum <= 30
   and status = 'SUCCESS'
   order by endtime desc;

Пожалуйста, помогите мне найти среднее время окончания указанного выше запроса. Мне это нужно срочно. Всем, кто хорош в SQL, можете ли вы изменить мой запрос и опубликовать его.

Я нахожу среднее по метке времени очень сложным для обработки.

Ответы [ 2 ]

5 голосов
/ 16 февраля 2012

Вы можете сделать это с помощью агрегации AVG. но этого не достаточно. Сначала вам нужно преобразовать TIMESTAMP в число, затем использовать функцию AVG.

Из руководства - Агрегатные функции SUM () и AVG () не работают с временными значениями. (Они преобразуют значения в числа, что приводит к потере части после первого нецифрового символа.) Чтобы обойти эту проблему, вы можете преобразовать их в числовые единицы, выполнить статистическую операцию и обратно преобразовать во временное значение.

Итак, попробуйте что-то вроде этого -

SELECT
  FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(endtime)))
FROM
  ...
  ...
  ...
0 голосов
/ 16 февраля 2012
SELECT a.job_name, AVG(endtime)
FROM (...)
WHERE (...)
GROUP BY a.job_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...