資料表:Activity | |
Column Name | Type |
player_id | int |
device_id | int |
event_date | date |
games_played | int |
(player_id, event_date) is the primary key 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. |
個人解釋(並非逐字翻譯,取其中意思翻譯) |
Column Name和Type作為資料表的主鍵,這個資料表用於顯示玩家在遊戲內中的活動情形。藉由此表顯示出玩家的各種活動。 每一行皆註記遊戲玩家的各種活動紀錄(可能有些是0)。資料表的內容都是都是玩家登出以前顯示的紀錄。 |
題目 |
Write an SQL query to report the first login date for each player. Return the result table in any order. |
個人解釋(並非逐字翻譯,取其中意思翻譯) |
編寫一個SQL程式來查詢玩家首次登陸(event_date)的日期。 以任意順序顯示其查詢資料。 |
輸入: | |||
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 |
輸出: | |
player_id | first_login |
1 | 2016-03-01 |
2 | 2017-06-25 |
3 | 2016-03-02 |
解答 |
因為只需要取首次登陸資料,所以這裡選擇以Select distinct來輸出不連續資料,避免輸出重複使用者的不同登陸時間。 先取作為排序編號(player_id),再使用min()函數來取(event_date)第一次的紀錄。 並使用as來將主鍵變更為first_login。 from表示這些資料皆取自Activity資料表。 最後讓輸出資料以(player_id)做分組,這部分以GROUP BY來進行處理。 |
程式碼 |
select distinct player_id,min(event_date) as first_login from Activity group by player_id |
【Life】 (0)
└Composition (4)
└Technology (10)
└Picture (5)
└Diary (14)
└Game (0)
【RPG_Guild】 (1)
└Character (4)
└Setting (6)
└Story (0)
【箱庭_Guild】 (0)
└Character (5)
└Setting (9)
└Story (2)
└Item (4)
└NonPlayerCharacter (5)
└Mob (1)