持续创作,加速成长!这是我参与「掘金日新计划 · 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
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。