- : Die ID des Mitarbeiter
Code: Select all
employee_id
- : Der Transaktionsbetrag (kann positiv oder negativ sein, basierend auf dem Grund)
Code: Select all
amount
- : Eine Beschreibung der Transaktion
Code: Select all
reason
- : Der Zeitstempel, wenn die Transaktion auftrat
Code: Select all
created_at
Start Balance < /th>
Änderung < /th>
Endgültiges Gleichgewicht < /th>
< /tr>
< /thead>
0 < /td>
+50 < /td>
50 < /td>
< /tr>
50 < /td>
-15 < /td>
35 < /td> < Br /> < /tr>
35 < /td>
+10 < /td>
45 < /td >
< /tr>
45 < /td>
-5 < /td>
40 < /td>
Meine SQL -Abfrage (nicht wie erwartet funktioniert)
Ich habe versucht, eine Fensterfunktion zu verwenden, um das vorherige Gleichgewicht, die Änderung und das endgültige Gleichgewicht zu berechnen, aber die Ergebnisse sind falsch: < /p>
Code: Select all
SELECT
id,
employee_id,
COALESCE(LAG(SUM(amount)) OVER (ORDER BY created_at ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING), 0) AS prev_amount,
amount AS change,
SUM(amount) OVER (ORDER BY created_at ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS final_amount
FROM settlement_settlement
GROUP BY id
ORDER BY created_at;