我想爲一個指定的分區在一行中的第一列的第一個值和第二列的最後一個值。爲此,我創建了此查詢:PostgreSQL中的一行中的窗函數的第一個和最後一個值
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是的,它爲我做了。這個解決方案有什麼問題? –