【问题标题】:how to get avg time in postgresql如何在 postgresql 中获取平均时间
【发布时间】:2012-08-01 00:45:15
【问题描述】:

我有这样的表:

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;

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

【问题讨论】:

    标签: sql postgresql intervals average


    【解决方案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)
    

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

    【讨论】:

      【解决方案2】:

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

      select interval '02:00:00'/4
      

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

      select total_time / number
      

      【讨论】:

        【解决方案3】:

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

        select to_timestamp(avg(18000 + 
                                cast(extract(epoch from badge_in_time::time) as integer)
                               )
                           )::time as Avg_Badge_in
        

        【讨论】:

        • 这是一个很好的答案,但针对的是不同的问题。这根本不能回答 OP 的问题。
        【解决方案4】:

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

        【讨论】:

        • 否:函数 avg(timestamp without time zone) 不存在
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 2021-02-02
        • 2021-07-17
        相关资源
        最近更新 更多