2022年10月更文挑战30-leetcode511-游戏玩法分析I

105 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

leetcode511-游戏玩法分析I

前文

本文内容主要是leetcode相关题目的解答。解法为个人选择解法,可能不是最佳答案。本题目主要是数据库类型题目,考察对于数据库查询中分组相关知识的理解。题目链接为:leetcode.cn/problems/ga…

题目信息

活动表 Activity:

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| player_id    | int     |
| device_id    | int     |
| event_date   | date    |
| games_played | int     |
+--------------+---------+

表的主键是 (player_id, event_date)。 这张表展示了一些游戏玩家在游戏平台上的行为活动。 每行数据记录了一名玩家在退出平台之前,当天使用同一台设备登录平台后打开的游戏的数目(可能是 0 个)。

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

解题方法分析

根据题目信息可知,我们预先已经有了一张关于玩家在游戏平台上活动的表,表中包含玩家的id以及玩家活动操作的时间。而根据题目信息来看,我们需要获取的是玩家的id以及玩家第一次登陆平台的时间。那么表中的信息理论上包含了同一个玩家的若干条操作,那么我们如何获取最早时间呢?可以直接进行排序,在所有的玩家活动时间中获取最早的时间点。而如何在若干记录中获取最早的一条数据,采取的办法则是group by的方式。通过group by分组,我们利用玩家id进行分组。分组后可以获取组内的信息。根据我们需要查询最早登陆时间的要求,我们所查询的内容则为分组的玩家id,以及分组后组内的最早时间即可。二者结合进行查询,也就得到了目标的结果。

解题答案及结果

select 
player_id,min(event_date) as first_login
from Activity
group by player_id

image.png

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。