题目难度
中等
题目描述
Table: Activity
(player_id,event_date)是此表的主键。
这张表显示了某些游戏的玩家的活动情况。
每一行是一个玩家的记录,他在某一天使用某个设备注销之前登录并玩了很多游戏(可能是 0 )。
编写一个 SQL 查询,同时报告每组玩家和日期,以及玩家到目前为止玩了多少游戏。也就是说,在此日期之前玩家所玩的游戏总数。详细情况请查看示例。
正确答案
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;
分析
和组内排名一样,看一个人玩了多少次游戏,统计排在自己前面(日期小)的游戏次数之和。只不过排名是计数,这里是加和