2012-02-16 68 views
-1

这是我的以下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; 

请帮我找到上述query.I的结束时间平均需要这个urgently.Anybody谁是SQL好,可以请你修改我的查询&帖吧。

我发现平均时间戳很难处理。

+0

你的问题被标记'mysql',但'to_char'看起来相当Oraclish给我。 – 2012-02-16 07:41:47

回答

0
SELECT a.job_name, AVG(endtime) 
FROM (...) 
WHERE (...) 
GROUP BY a.job_name 
4

您可以在AVG聚合函数的帮助下完成此操作。但这还不够。首先,您必须将TIMESTAMP转换为数字,然后使用AVG功能。

从手册 - SUM()和AVG()聚合函数不适用于时间值。 (它们将值转换为数字,这会在第一个非数字字符后丢失该部分。)要解决此问题,可以将其转换为数值单位,执行聚合操作,然后转换回临时值。

因此,尝试这样的事情 -

SELECT 
    FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(endtime))) 
FROM 
    ... 
    ... 
    ... 
+0

它似乎离开.0000有没有办法在最后删除.0000? – CMCDragonkai 2014-03-12 11:01:47