2017-03-06 5 views
0

私は複数のレコードをした同じ値と異なるとき テーブルを聖霊降臨祭:PostgreSQLのdate_partで

私はこのような構造で、出欠表をしました:

者| |とき|なぜ

「」タイムゾーン付きタイムスタンプのNOT NULL、

「誰が」、テキスト、

私は同じのために、各レコードの間の差を計算する必要があります。

私が試した:

DATE_PART('hour', table."when"::timestamp - table."when"::timestamp) 
をしかし働くように思われません。

A | 2017-03-01 08:30 
A | 2017-03-01 12:30 
B | 2017-03-01 08:30 
B | 2017-03-01 12:30 

すなわち

AとBの合計時間を取得する必要がありますが、注文のアクセスに "前" 行の値をwindow functionが必要

答えて

1

を分離:

select who, 
     when, 
     when - lag(when) over (partition by who order by when) as diff 
from the_table 
order by who, when; 

の場合あなたは1人につき2つの行しか持っていないか、または最初の値と最後の値がwhenの場合は、単純な集計を使用してください:

select who, 
     max(when) - min(when) 
from the_table 
group by who 
order by who;