LeetCode(数据库)- 游戏玩法分析 II

Posted Lux_Sun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(数据库)- 游戏玩法分析 II相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

 

题目大意:略。

 

解题思路:

  • 解决方案(1):MIN(event_date)是针对player_id分组内的聚合函数,而不是定位到了一行数据,因此它不会影响到SELECT到的device_id,所以会默认返回同组内第一个device_id。
  • 解决方案(2):自定义变量,这里初始化为 -1 而不是 NULL,是因为 NULL 不能用来比较 <> 或 !=,否则会出现结果离你的预想不一样。

 

AC 代码

-- 解决方案(1)
SELECT act.player_id, act.device_id
FROM Activity act, (SELECT player_id, MIN(event_date) event_date FROM Activity GROUP BY player_id) rs
WHERE act.player_id = rs.player_id AND act.event_date = rs.event_date

-- 解决方案(2)
SELECT player_id, device_id
FROM (SELECT IF(@item<>player_id, 1, 0) mark, @item:=player_id, player_id, device_id FROM (SELECT * FROM Activity ORDER BY player_id, event_date) rs, (SELECT @item:=-1) init) rs1
WHERE rs1.mark = 1

以上是关于LeetCode(数据库)- 游戏玩法分析 II的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(数据库)- 游戏玩法分析 V

LeetCode(数据库)- 游戏玩法分析 I

LeetCode(数据库)- 游戏玩法分析 IV

LeetCode(数据库)- 游戏玩法分析 III

LeetCode:Database 11.游戏玩法分析 III

LeetCode:Database 09.游戏玩法分析 I