13 游戏玩法分析 I
astak16 opened this issue · comments
柚子uccs commented
题目
获取每位玩家第一次登录平台的日期
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),
(1, 2, '2016-05-02', 6),
(1, 3, '2017-06-25', 1),
(3, 1, '2016-03-02', 0),
(3, 4, '2018-07-03', 5);
SQL:方法一
select player_id, min(event_date) as first_login from activity
group by player_id;
解析
- 按照
player_id
将activity
分组 - 使用
min
函数,求出日期的最小值
SQL:方法二
select player_id, event_date as first_login from (
select
player_id,
event_date,
dense_rank()
over(partition by player_id order by event_date) as 排名
from activity
) as temp where 排名 = 1;
解析
- 使用
dense_rank
函数按照player_id
和event_date
进行排序,并算出排名将其作为临时表temp
- 查询临时表
temp
,筛选出排名 = 1
数据