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的主要内容,如果未能解决你的问题,请参考以下文章