create table t1 (
data date,
login varchar (10),
value int
);
insert into t1 (data, login, value)
values
('2022-08-21', 'somelogin', 50),
('2022-08-21', 'somelogin', 50),
('2022-09-21', 'somelogin', 50),
('2022-08-21', 'somelogin2', 50),
('2022-08-21', 'somelogin', 50),
('2022-09-21', 'somelogin', 50),
('2022-08-21', 'somelogin3', 50),
('2022-08-21', 'somelogin2', 50);
select
date_trunc('month', data),
login,
value,
sum (value) over (
partition by login, date_trunc('month', data)
order by data rows between unbounded preceding and current row
) as lag_value
from
t1;