【力扣刷题日记】512.游戏玩法分析II

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

512.游戏玩法分析II
表:Activity

列名类型
player_idint
device_idint
event_datedate
games_playedint

(player_id, event_date) 是这个表的两个主键(具有唯一值的列的组合)这个表显示的是某些游戏玩家的游戏活动情况每一行是在某天使用某个设备登出之前登录并玩多个游戏(可能为0)的玩家的记录
请编写解决方案,描述每一个玩家首次登陆的设备名称


我那不值一提的想法:

  • 首先梳理表内容,题干一共给了一张活动表,记录了玩家id,设备id,登录日期,玩游戏的数量
  • 其次分析需求,需要找到每一个玩家首次登录的设备名称
  • 既然是首次登录,那么就需要分组找到每个玩家对应日期的最小值
with min_date as (
    select player_id,min(event_date) as mindate 
    from Activity
    group by player_id
)
  • 在找到最小值后,将这个临时表连接原表,筛选条件是player_id,event_date都要相等
select m.player_id,a.device_id
from min_date m 
left join Activity a 
on m.player_id = a.player_id and m.mindate = a.event_date
  • 完整代码
with min_date as (
    select player_id,min(event_date) as mindate 
    from Activity
    group by player_id
)

select m.player_id,a.device_id
from min_date m 
left join Activity a 
on m.player_id = a.player_id and m.mindate = a.event_date

结果:

在这里插入图片描述


总结:

能运行就行。


  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值