Welcome to Subscribe On Youtube

511. Game Play Analysis I

Description

Table: Activity

 +--------------+---------+ | Column Name | Type | +--------------+---------+ | player_id | int | | device_id | int | | event_date | date | | games_played | int | +--------------+---------+ (player_id, event_date) is the primary key (combination of columns with unique values) of this table. This table shows the activity of players of some games. Each row is a record of a player who logged in and played a number of games (possibly 0) before logging out on someday using some device. 

 

Write a solution to find the first login date for each player.

Return the result table in any order.

The result format is in the following example.

 

Example 1:

 Input: Activity table: +-----------+-----------+------------+--------------+ | player_id | device_id | event_date | games_played | +-----------+-----------+------------+--------------+ | 1 | 2 | 2016-03-01 | 5 | | 1 | 2 | 2016-05-02 | 6 | | 2 | 3 | 2017-06-25 | 1 | | 3 | 1 | 2016-03-02 | 0 | | 3 | 4 | 2018-07-03 | 5 | +-----------+-----------+------------+--------------+ Output: +-----------+-------------+ | player_id | first_login | +-----------+-------------+ | 1 | 2016-03-01 | | 2 | 2017-06-25 | | 3 | 2016-03-02 | +-----------+-------------+ 

Solutions

Solution 1: Group By + Min Function

We can use GROUP BY to group the player_id and then take the minimum event_date in each group as the date when the player first logged into the platform.

  • import pandas as pd def game_analysis(activity: pd.DataFrame) -> pd.DataFrame: return ( activity.groupby("player_id") .agg(first_login=("event_date", "min")) .reset_index() ) 
  • # Write your MySQL query statement below SELECT player_id, MIN(event_date) AS first_login FROM Activity GROUP BY 1; 

All Problems

All Solutions