【发布时间】:2017-11-06 05:03:55
【问题描述】:
我想在指定分区的一行中拥有一列的第一个值和第二列的最后一个值。为此我创建了这个查询:
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。
为什么会这样?
【问题讨论】:
标签: postgresql window-functions