私は指定されたパーティションの1つの列の最初の値と2番目の列の最後の値を1つの行に入れたいと思います。そのために私はこのクエリ作成:PostgreSQLの1行のウィンドウ関数の最初と最後の値
SELECT DISTINCT
b.machine_id,
batch,
timestamp_sta,
timestamp_stp,
FIRST_VALUE(timestamp_sta) OVER w AS batch_start,
LAST_VALUE(timestamp_stp) OVER w AS batch_end
FROM db_data.sta_stp AS a
JOIN db_data.ll_lu AS b
ON a.ll_lu_id=b.id
WINDOW w AS (PARTITION BY batch, machine_id ORDER BY timestamp_sta)
ORDER BY timestamp_sta, batch, machine_id;
をしかし、あなたが画像で見ることができるよう、batch_end列で返されたデータは正しくありません。
batch_start列には、最初の正しい値がtimestamp_sta列になっています。しかしbatch_endは "2012-09-17 10:49:45"で、同じ行のtimestamp_stpになります。
なぜそうですか?
グレート、それはそれです!私はこのマニュアルページも見つけましたが、それがどのように動作するのかまだ完全に理解していませんでした。実際の例をありがとう。 –
残念ながら、私は期待した結果を返すとは思わない。 – klin
@klinはい、それは私のためでした。このソリューションで何が問題になっていますか? –