力扣511(MySQL)-游戏玩法分析Ⅰ(简单)

题目:

活动表 Activity

写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。

查询结果的格式如下所示:

 

 解题思路:

方法一:使用dense_rank() over(partition by ... order by ...):将登录时间按用户id进行分组然后升序排序,最后筛选出排序后为1的数据。

1  select player_id,event_date as first_login
2  from (
3      select player_id,event_date,dense_rank() over(partition by player_id order by event_date) as rnk 
4      from Activity
5      ) as a
6 where rnk = 1;

方法二:使用聚合函数min()和group by

1 select player_id,min(event_date) as first_login
2 from Activity
3 group by player_id;

 方法三:使用where() in

1 select player_id,event_date as first_login
2 from Activity
3 where (player_id, event_date) in(
4     select player_id, min(event_date) as first_login
5     from Activity
6     group by player_id
7 );

 

posted on 2023-03-21 09:26  我不想一直当菜鸟  阅读(12)  评论(0编辑  收藏  举报