Ich möchte den ersten Wert einer Spalte und den letzten Wert der zweiten Spalte in einer Zeile für eine bestimmte Partition haben. Dafür habe ich diese Abfrage:Erster und letzter Wert der Fensterfunktion in einer Zeile in 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;
Aber wie Sie im Bild sehen können, zurückgegebenen Daten in batch_end Spalte nicht korrekt sind.
batch_start Spalt haben korrekten ersten Wert von timestamp_sta Spalt. Jedoch batch_end sollte "2012-09-17 10:49:45" sein und es entspricht timestamp_stp aus derselben Zeile.
Warum ist es so?
Große, das ist es! Ich habe gerade auch diese Handbuchseite entdeckt, aber ich habe immer noch nicht ganz verstanden, wie es funktioniert. Danke für das funktionierende Beispiel. –
Leider glaube ich nicht, dass es das erwartete Ergebnis zurückgibt. – klin
@klin Ja, hat es für mich getan. Was ist falsch an dieser Lösung? –