目录
511写一条 SQL 查询语句获取每位用户 第一次登陆平台的日期。
题目
解答思路:可以用窗口函数;也可以用最小值函数min
## 最小函数
select player_id,min(event_date) as first_login
from Activity
group by player_id
## 最小值窗口函数
select distinct player_id,min(event_date) over(partition by player_id) as first_login
from Activity
512. 游戏玩法分析 II
题目
解答思路:一种是窗口函数方法;另一种是用()in()方法
## ()in()方法
select player_id,device_id
from Activity
where (player_id,event_date) in
( select player_id,min(event_date) as event_date
from Activity
group by player_id )
## 窗口函数
select player_id, device_id
from
(select player_id, device_id,
dense_rank() over(partition by player_id order by event_date asc) rk
from activity) a
where a.rk=1
534. 游戏玩法分析 III
题目
解答思路:使用累加求和窗口函数sum()over()
补充知识点:窗口函数sum()over() 链接:Hive--开窗函数--窗口聚合函数:SUM、AVG、COUNT、MAX、MIN_韩家小志的博客-CSDN博客_窗口函数count
select player_id, event_date,
sum(games_played) over(partition by player_id order by event_date) games_played_so_far
from activity
550. 游戏玩法分析 IV 重难点
解答思路:先得到用户首次注册后次日登录的日期(用date_add函数得出),再对应原数据是否存在该日期,统计存在的个数,除以总人数。注意这道题求的是首日注册后第二天连续登录的,不是任意两天连续登录就行。
补充知识点: