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