选择范围中每个日期的最小时间值并获取oracle中的平均值

时间:2012-04-13 09:31:09

标签: oracle time average

我在oracle user_transn(userid,resourceid,transid,act_timestamp)中有一个表,其值为

    (21, 14, 123321, 28-NOV-11 13:30:21)
    (21, 14, 123321, 28-NOV-11 14:29:28)
    (21, 14, 123321, 29-NOV-11 18:44:22)
    (21, 14, 123321, 30-NOV-11 11:30:55)
    (21, 14, 123321, 30-NOV-11 16:56:11)
    (21, 14, 123321, 30-NOV-11 19:32:31)
    (21, 14, 123321, 31-NOV-11 09:22:51)
    (21, 14, 123321, 31-NOV-11 12:22:49)
    (21, 14, 123321, 31-NOV-11 13:11:17)
    (21, 14, 123321, 31-NOV-11 16:41:21)

查询应该占用每个不同日期的act_timestamp字段的最小时间,并计算给定日期范围内的平均最短时间(在本例中为28-31 nov)

所以对于上面的结果应该是:13:30:21 + 11:30:55 + 9:22:51 / 3 = 11:27:42 作为平均最短时间

并且类似于最长时间。

提前致谢

1 个答案:

答案 0 :(得分:1)

选择min_timestamp,计算时间部分的平均值,并添加当天转换回日期:

SELECT
  TO_CHAR(TRUNC(SYSDATE) + AVG(min_timestamp - TRUNC(min_timestamp)), 'HH24:MI:SS')
FROM
(
  SELECT MIN(act_timestamp) AS min_timestamp
  FROM user_transn
  GROUP BY TRUNC(act_timestamp)
)