sentencias lista ejemplos datos consultas comandos basico basicas avanzadas sql postgresql group-by pyspark-sql

lista - sentencias basicas de sql



SQL: registros agregados dentro de un grupo teniendo en cuenta el orden de las filas (1)

Tengo una tabla de la siguiente estructura

| id | a | b | | 1 | 1 | 1 | | 2 | 1 | 5 | | 3 | 2 | 2 | | 4 | 2 | 3 | | 5 | 2 | 5 | | 6 | 1 | 3 | | 7 | 1 | 7 | | 8 | 3 | 1 | | 9 | 2 | 0 | | 10 | 4 | 8 |

y necesitamos calcular la suma en la columna "b" dentro de cada grupo en la columna "a" pero teniendo en cuenta el orden de las filas, es decir, al principio deberíamos sumar 1 + 5 para a == 1 ( id s 1 y 2 ), luego agregaremos 2 + 3 + 5 para a = 2 ( id s 3, 4, 5) y así sucesivamente.

Por lo tanto, en el resultado, necesito tener la tabla como esta

| a | sum(b) | | 1 | 6 | | 2 | 10 | | 1 | 10 | | 3 | 1 | | 2 | 0 | | 4 | 8 |

Por favor, ayuda a escribir una consulta SQL para hacer esto.


select a,sum(b) from (select * ,row_number () over (order by id) as rn ,row_number () over (partition by a order by id) as rnp from t ) t group by a,rn - rnp order by min(id) ;

PD
No estoy contando con ID para ser un continuo