阅读量:0
目录
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函数得出),再对应原数据是否存在该日期,统计存在的个数,除以总人数。注意这道题求的是首日注册后第二天连续登录的,不是任意两天连续登录就行。
补充知识点: