这是我的以下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的人,请你修改我的查询&amp;发布它。
我发现时间戳的平均值很难处理。
答案 0 :(得分:5)
您可以借助AVG聚合功能完成此操作。但这还不够。首先,您必须将TIMESTAMP转换为数字,然后使用AVG函数。
从手册 - SUM()和AVG()聚合函数不适用于时间值。 (它们将值转换为数字,在第一个非数字字符后丢失该部分。)要解决此问题,您可以转换为数字单位,执行聚合操作,并转换回时间值。
所以,尝试这样的事情 -
SELECT
FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(endtime)))
FROM
...
...
...
答案 1 :(得分:0)
SELECT a.job_name, AVG(endtime)
FROM (...)
WHERE (...)
GROUP BY a.job_name