---
tags: sql, LeetCode
---
# 511. Game Play Analysis I
`Game Play Analysis I`
透過`leetcode 511`[Game Play Analysis I](https://leetcode.com/problems/game-play-analysis-i/)來練習
#### 使用table

(player_id, event_date) 是這個表的主鍵。
這張表顯示了一些遊戲玩家的活躍度。
每一行都是玩家在某天使用某些設備註銷之前登錄並玩了許多遊戲(可能為 0)的記錄。
## 題目說明:
編寫 SQL 查詢以報告每個玩家的首次登錄日期。
按任意順序返回結果表。
查詢結果格式位於以下範例中。

## 解題:
以下為第一個例題 **43.44%**
1. select `MIN(M.EVENT_DATE)` (最小值)
2. GROUP BY 起來 (依M.PLAYER_ID)
```sql=
SELECT M.PLAYER_ID,MIN(M.EVENT_DATE) AS FIRST_LOGIN
FROM Activity M
GROUP BY M.PLAYER_ID
```
以下為第二個例題 **72.11%**
select 2次
1. 先將Activity資料表處理 加入id排序(依照M.EVENT_DATE) [ROW_NUMBER()](https://ithelp.ithome.com.tw/articles/10225653)
`ROW_NUMBER() OVER(PARTITION BY M.PLAYER_ID ORDER BY M.EVENT_DATE)`

2. 再select出id = 1 的就是各玩家初次登入日期
```sql=
SELECT A.PLAYER_ID,A.FIRST_LOGIN FROM(
SELECT M.PLAYER_ID,M.EVENT_DATE AS FIRST_LOGIN
, ROW_NUMBER() OVER(PARTITION BY M.PLAYER_ID ORDER BY M.EVENT_DATE) AS ID
FROM Activity M
) A WHERE ID = 1
```
By. @UEW2WaUHTqSmPOSfnfXrNw