0

我有这样的表:

name   number   total_time    avg_time
tom      10      00:02:28        ?
kevin    6       09:22:25        ?

total_time 是间隔类型,我可以轻松更改为字符串。现在,我想像这样获得 avg_time

avg_time = total_time / number;

我徘徊如何得到结果?我尝试计算天,小时,分钟,秒,但这太难了,谁能给我一些建议?多谢

4

4 回答 4

1

希望这个例子(基于你的)是有帮助的:

postgres=# SELECT *, total_time / number AS avg_time 
    FROM (SELECT INTERVAL '00:02:28' AS total_time, 10 AS number) a;
 total_time | number |  avg_time  
------------+--------+------------
 00:02:28   |     10 | 00:00:14.8
(1 row)

您能否更具体地说明其中的哪一部分不适合您?

于 2012-08-01T00:54:28.230 回答
0

不知道对不对,随便用/就可以了,像这样

select interval '02:00:00'/4

我得到了正确的答案,所以问题可能很简单

select total_time / number
于 2012-08-01T00:53:45.550 回答
0

下面使用纪元时间并且工作完美(18000是纪元的开始)

select to_timestamp(avg(18000 + 
                        cast(extract(epoch from badge_in_time::time) as integer)
                       )
                   )::time as Avg_Badge_in
于 2016-05-16T18:56:34.867 回答
-1

您还可以使用avg运算符: select name, avg(total_time) from table group by name;

于 2013-07-04T11:00:32.097 回答