diff --git a/.github/workflows/black-lint.yml b/.github/workflows/black-lint.yml index d736e51720d31..d38f6ee285563 100644 --- a/.github/workflows/black-lint.yml +++ b/.github/workflows/black-lint.yml @@ -1,8 +1,13 @@ name: black-linter on: - pull_request: - branches: [main] + pull_request_target: + types: + - opened + - edited + - synchronize + branches: + - main jobs: build: diff --git a/.github/workflows/clang-format-lint.yml b/.github/workflows/clang-format-lint.yml index 2290d215343ae..66d906392db66 100644 --- a/.github/workflows/clang-format-lint.yml +++ b/.github/workflows/clang-format-lint.yml @@ -1,8 +1,13 @@ name: clang-format-linter on: - pull_request: - branches: [main] + pull_request_target: + types: + - opened + - edited + - synchronize + branches: + - main jobs: build: diff --git a/.github/workflows/pr-checker.yml b/.github/workflows/pr-checker.yml index a3b0996fb57f4..ca32218a29ee8 100644 --- a/.github/workflows/pr-checker.yml +++ b/.github/workflows/pr-checker.yml @@ -68,4 +68,5 @@ jobs: In addition, the coding style (such as the naming of variables and functions) should be as consistent as possible with the existing code in the project. + emojis: '+1, laugh' body-include: '' \ No newline at end of file diff --git a/solution/0500-0599/0511.Game Play Analysis I/README.md b/solution/0500-0599/0511.Game Play Analysis I/README.md index debde03f38461..e9c42fc002ce9 100644 --- a/solution/0500-0599/0511.Game Play Analysis I/README.md +++ b/solution/0500-0599/0511.Game Play Analysis I/README.md @@ -54,14 +54,17 @@ Result 表: +**方法一:GROUP BY** + +我们可以用 `GROUP BY` 对 `player_id` 进行分组,然后取每一组中最小的 `event_date` 作为玩家第一次登录平台的日期。 + ### **SQL** ```sql -SELECT - player_id, - MIN(event_date) AS first_login +# Write your MySQL query statement below +SELECT player_id, min(event_date) AS first_login FROM Activity GROUP BY player_id; ``` diff --git a/solution/0500-0599/0511.Game Play Analysis I/README_EN.md b/solution/0500-0599/0511.Game Play Analysis I/README_EN.md index 2454f84989c7e..b0e0262cf2cde 100644 --- a/solution/0500-0599/0511.Game Play Analysis I/README_EN.md +++ b/solution/0500-0599/0511.Game Play Analysis I/README_EN.md @@ -60,9 +60,8 @@ Activity table: ### **SQL** ```sql -SELECT - player_id, - MIN(event_date) AS first_login +# Write your MySQL query statement below +SELECT player_id, min(event_date) AS first_login FROM Activity GROUP BY player_id; ``` diff --git a/solution/0500-0599/0511.Game Play Analysis I/Solution.sql b/solution/0500-0599/0511.Game Play Analysis I/Solution.sql index 8cf93d675be7e..d84f2256c0cc1 100644 --- a/solution/0500-0599/0511.Game Play Analysis I/Solution.sql +++ b/solution/0500-0599/0511.Game Play Analysis I/Solution.sql @@ -1,5 +1,4 @@ -SELECT - player_id, - MIN(event_date) AS first_login +# Write your MySQL query statement below +SELECT player_id, min(event_date) AS first_login FROM Activity GROUP BY player_id; diff --git a/solution/0500-0599/0512.Game Play Analysis II/README.md b/solution/0500-0599/0512.Game Play Analysis II/README.md index 9c6f0e3644e92..8997e613aecc9 100644 --- a/solution/0500-0599/0512.Game Play Analysis II/README.md +++ b/solution/0500-0599/0512.Game Play Analysis II/README.md @@ -51,6 +51,14 @@ Result table: +**方法一:子查询** + +我们可以使用 `GROUP BY` 和 `MIN` 函数来找到每个玩家的第一次登录日期,然后使用联合键子查询来找到每个玩家的第一次登录设备。 + +**方法二:窗口函数** + +我们可以使用窗口函数 `rank()`,它可以为每个玩家的每个登录日期分配一个排名,然后我们可以选择排名为 $1$ 的行。 + ### **SQL** @@ -71,4 +79,21 @@ WHERE ); ``` +```sql +# Write your MySQL query statement below +WITH + T AS ( + SELECT + *, + rank() OVER ( + PARTITION BY player_id + ORDER BY event_date + ) AS rk + FROM Activity + ) +SELECT player_id, device_id +FROM T +WHERE rk = 1; +``` + diff --git a/solution/0500-0599/0512.Game Play Analysis II/README_EN.md b/solution/0500-0599/0512.Game Play Analysis II/README_EN.md index 20853d3aa1e42..9842e8e5864a2 100644 --- a/solution/0500-0599/0512.Game Play Analysis II/README_EN.md +++ b/solution/0500-0599/0512.Game Play Analysis II/README_EN.md @@ -75,4 +75,21 @@ WHERE ); ``` +```sql +# Write your MySQL query statement below +WITH + T AS ( + SELECT + *, + rank() OVER ( + PARTITION BY player_id + ORDER BY event_date + ) AS rk + FROM Activity + ) +SELECT player_id, device_id +FROM T +WHERE rk = 1; +``` + diff --git a/solution/0500-0599/0534.Game Play Analysis III/README.md b/solution/0500-0599/0534.Game Play Analysis III/README.md index 15ed5310b89b7..576428e36b6e0 100644 --- a/solution/0500-0599/0534.Game Play Analysis III/README.md +++ b/solution/0500-0599/0534.Game Play Analysis III/README.md @@ -59,20 +59,24 @@ Result table: +**方法一:SUM() OVER() 窗口函数** + +我们可以使用 `SUM() OVER()` 窗口函数来计算每个玩家到目前为止玩了多少游戏。在 `OVER()` 子句中,我们使用 `PARTITION BY` 子句将玩家分组,然后使用 `ORDER BY` 子句按日期排序。 + ### **SQL** ```sql +# Write your MySQL query statement below SELECT player_id, event_date, - SUM(games_played) OVER ( + sum(games_played) OVER ( PARTITION BY player_id ORDER BY event_date ) AS games_played_so_far -FROM Activity -ORDER BY 1, 2; +FROM Activity; ``` diff --git a/solution/0500-0599/0534.Game Play Analysis III/README_EN.md b/solution/0500-0599/0534.Game Play Analysis III/README_EN.md index d4564a72cf3ac..69eeaed198e7c 100644 --- a/solution/0500-0599/0534.Game Play Analysis III/README_EN.md +++ b/solution/0500-0599/0534.Game Play Analysis III/README_EN.md @@ -66,15 +66,15 @@ Note that for each player we only care about the days when the player logged in. ### **SQL** ```sql +# Write your MySQL query statement below SELECT player_id, event_date, - SUM(games_played) OVER ( + sum(games_played) OVER ( PARTITION BY player_id ORDER BY event_date ) AS games_played_so_far -FROM Activity -ORDER BY 1, 2; +FROM Activity; ``` diff --git a/solution/0500-0599/0534.Game Play Analysis III/Solution.sql b/solution/0500-0599/0534.Game Play Analysis III/Solution.sql index e90dbd52029c1..aff33ea8703e1 100644 --- a/solution/0500-0599/0534.Game Play Analysis III/Solution.sql +++ b/solution/0500-0599/0534.Game Play Analysis III/Solution.sql @@ -1,9 +1,9 @@ +# Write your MySQL query statement below SELECT player_id, event_date, - SUM(games_played) OVER ( + sum(games_played) OVER ( PARTITION BY player_id ORDER BY event_date ) AS games_played_so_far -FROM Activity -ORDER BY 1, 2; +FROM Activity;