有如下一张activity表
player_id device_id event_date games_played
1 2 '2016-01-01' 5
1 2 '2016-05-02' 6
1 3 '2017-07-25' 1
3 1 '2016-03-02' 0
3 4 '2018-07-03' 5
其中games_played是玩家登陆玩的游戏数量,
查询每个玩家每天累计玩的游戏数量有多少?结果如下:
player_id event_date games_played_so_far
1 '2016-01-01' 5
1 '2016-05-02' 11
1 '2017-07-25' 12
3 '2016-03-02' 0
3 '2018-07-03' 5
解释:玩家1第一次玩了5个,所以是5,第二次是6个,所以累计就是5+6=11,
第三次是1个,累计就是5+6+1=12
玩家2类似
解决:
select player_id
,event_date
,sum(games_played) over(partition by player_id order by event_date) as games_played_so_far
from activity
;
player_id event_date games_played_so_far
1 2016-01-01 5
1 2016-05-02 11
1 2017-07-25 12
3 2016-03-02 0
3 2018-07-03 5
备注:建表和数据
create table activity(player_id int,device_id int,event_date date,games_played int);
insert into activity values(1,2,'2016-01-01',5);
insert into activity values(1,2,'2016-05-02',6);
insert into activity values(1,3,'2017-07-25',1);
insert into activity values(3,1,'2016-03-02',0);
insert into activity values(3,4,'2018-07-03',5);