建表
create table activity
(
player_id
int,
device_id
int,
event_date
date,
games_played
int
);
insert into activity
values(1, 2, '2016-03-01', 5);
insert into activity
values(1, 2, '2016-05-02', 6);
insert into activity
values(1, 3, '2017-06-25', 1);
insert into activity
values(3, 1, '2016-03-02', 0);
insert into activity
values(3, 4, '2018-07-03', 5);
解题思路
自连接,第一个表的时间>=第二个表的时间,累加第二个表的次数,即“之前的和”根据id和时间分组
select a1
.player_id
, a1
.event_date
, sum(a2
.games_played
) as games_played_so_far
from activity a1
, activity a2
where a1
.player_id
=a2
.player_id
and a1
.event_date
>=a2
.event_date
group by a1
.player_id
, a1
.event_date
;
转载请注明原文地址:https://blackberry.8miu.com/read-14141.html