想要精通算法和SQL的成长之路 - 游戏玩法分析 I(SQL)
前言
一. 游戏玩法分析 I
原题链接
有一张表:Activity
:表的主键是 (player_id, event_date)
这张表展示了一些游戏玩家在游戏平台上的行为活动。每行数据记录了一名玩家在退出平台之前,当天使用同一台设备登录平台后打开的游戏的数目(可能是 0 个)。
-- ----------------------------
-- Table structure for Activity
-- ----------------------------
DROP TABLE IF EXISTS `Activity`;
CREATE TABLE `Activity` (
`player_id` int(10) NOT NULL,
`device_id` int(10) DEFAULT NULL,
`event_date` date NOT NULL,
`games_played` int(10) DEFAULT NULL,
PRIMARY KEY (`event_date`,`player_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of Activity
-- ----------------------------
BEGIN;
INSERT INTO `Activity` VALUES (1, 2, '2016-03-01', 5);
INSERT INTO `Activity` VALUES (3, 1, '2016-03-02', 0);
INSERT INTO `Activity` VALUES (1, 2, '2016-05-02', 6);
INSERT INTO `Activity` VALUES (2, 3, '2017-06-25', 1);
INSERT INTO `Activity` VALUES (3, 4, '2018-07-03', 5);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
写一条 SQL
查询语句获取每位玩家第一次登陆平台的日期。输出结果如下:
- 需要根据玩家来分组。因此用到
GROUP BY
。 - 由于要取最小的那个日期,因此可以使用
min
函数。
结果如下:
SELECT
a.player_id,
MIN( a.event_date ) as 'first_login'
FROM
Activity a
GROUP BY
a.player_id