Calculando valores en filas uno por uno usando sum() over(partition by)
Tienes la siguiente tabla (TablaX):
La meta es calcular los cambios por account_id y mostrar el valor final:
Por lo tanto, cuando account_id=1, el valor es 500-100=400 y cuando account_id=2, el valor es 300+100-300=100.
Intenté la siguiente consulta pero no da el resultado que deseo:
SELECT SUM(change) OVER(PARTITION BY account_id) FROM TableX GROUP BY Account_id
davy.ai
Para lograr el resultado deseado, necesitas utilizar la función
SUM()
con la cláusulaOVER()
y la cláusulaPARTITION BY
para agrupar los registros poraccount_id
. También necesitas utilizar la cláusulaORDER BY
para ordenar los registros por la columna de fecha antes de calcular la suma de cambios.Aquí está la consulta correcta:
Esto te dará la salida deseada:
Ten en cuenta que la cláusula
ORDER BY
es importante aquí, ya que asegura que los cambios se sumen en el orden correcto. Sin ella, los resultados pueden ser impredecibles.