0

私はこのようなテーブルを持っています:

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

total_time は interval のタイプで、文字列に簡単に変更できます。今、私はこのように 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 に答える