想要精通算法和SQL的成长之路 - 游戏玩法分析 I(SQL)

想要精通算法和SQL的成长之路 - 游戏玩法分析 I(SQL)

前言

想要精通算法和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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zong_0915

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值