leecode 数据库:550. 游戏玩法分析 IV

这篇具有很好参考价值的文章主要介绍了leecode 数据库:550. 游戏玩法分析 IV。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据导入:

Create table If Not Exists Activity (player_id int, device_id int, event_date date, games_played int);
Truncate table Activity;
insert into Activity (player_id, device_id, event_date, games_played) values ('1', '2', '2016-03-01', '5');
insert into Activity (player_id, device_id, event_date, games_played) values ('1', '2', '2016-03-02', '6');
insert into Activity (player_id, device_id, event_date, games_played) values ('2', '3', '2017-06-25', '1');
insert into Activity (player_id, device_id, event_date, games_played) values ('3', '1', '2016-03-02', '0');
insert into Activity (player_id, device_id, event_date, games_played) values ('3', '4', '2018-07-03', '5');

Table: Activity

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| player_id    | int     |
| device_id    | int     |
| event_date   | date    |
| games_played | int     |
+--------------+---------+
(player_id,event_date)是此表的主键。
这张表显示了某些游戏的玩家的活动情况。
每一行是一个玩家的记录,他在某一天使用某个设备注销之前登录并玩了很多游戏(可能是 0)。

编写一个 SQL 查询,报告在首次登录的第二天再次登录的玩家的比率,四舍五入到小数点后两位。换句话说,您需要计算从首次登录日期开始至少连续两天登录的玩家的数量,然后除以玩家总数。

查询结果格式如下所示:

Activity table:
+-----------+-----------+------------+--------------+
| player_id | device_id | event_date | games_played |
+-----------+-----------+------------+--------------+
| 1         | 2         | 2016-03-01 | 5            |
| 1         | 2         | 2016-03-02 | 6            |
| 2         | 3         | 2017-06-25 | 1            |
| 3         | 1         | 2016-03-02 | 0            |
| 3         | 4         | 2018-07-03 | 5            |
+-----------+-----------+------------+--------------+

Result table:
+-----------+
| fraction  |
+-----------+
| 0.33      |
+-----------+
只有 ID 为 1 的玩家在第一天登录后才重新登录,所以答案是 1/3 = 0.33

思路:

计算从首次登录日期开始至少连续两天登录的玩家的数量,然后除以玩家总数。

这明显是一个指标计算的题,这时候我们需要注意 ifnull 和 distinct,其次,我们要处理从首次登录日期开始至少连续两天,那么等价于event_date必须含有首次登陆日期+1,至于其他的我们不在乎,因为满足这一条件即可说明自首次登陆连续两天登陆了(如果三天及以上连续,那么也必须满足第二日在event_date中)。

算法:

  1. 找到每个人的首次登陆的第二天
select player_id, date(min(event_date) + 1)
from activity
group by player_id

# 输出
{"headers": ["player_id", "date(min(event_date) + 1)"], 
"values": [[1, "2016-03-02"], 
           [2, "2017-06-26"], 
           [3, "2016-03-03"]]}
  1. Activity表中把event_date和上面的进行匹配,可以找出哪些player_id的event_date里面含有【第二天登录的时间】
select 
	distinct player_id
from activity 
where (player_id, event_date) in
(
    select player_id, date(min(event_date) + 1)
    from activity
    group by player_id

)

计算指标

主要 ifnull、round、count的使用

答案:

select 
	ifnull(
	round(
        count(distinct player_id)/ 
    	(select count(distinct player_id) from activity)
    ,2)
    ,0) as fraction
from activity 
where (player_id, event_date) in
(
    select player_id, date(min(event_date) + 1)
    from activity
    group by player_id

)

结语:欢迎大家多多讨论。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/game-play-analysis-iv
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。文章来源地址https://www.toymoban.com/news/detail-436769.html

到了这里,关于leecode 数据库:550. 游戏玩法分析 IV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Microsoft Azure 的1024种玩法】三十. 使用Azure Data Studio之快速上手连接管理Azure SQL 数据库(一)

    Azure Data Studio 是一种跨平台的数据库工具,适合在 Windows、macOS 和 Linux 上使用本地和云数据平台的数据专业人员,Azure Data Studio 利用 IntelliSense、代码片段、源代码管理集成和集成终端提供新式编辑器体验,在本文中将会介绍到如何通过Azure Data Studio 随时随地的来在本地计算机

    2024年02月04日
    浏览(51)
  • 拼图小游戏(实现游戏主界面)(未连接数据库)

    基于IDEA,创建窗体进行游戏 默认的用户名和密码为:zhangsan,123                                         lisi,1234

    2024年01月16日
    浏览(48)
  • 分析型数据库:分布式分析型数据库

    分析型数据库的另外一个发展方向就是以分布式技术来代替MPP的并行计算,一方面分布式技术比MPP有更好的可扩展性,对底层的异构软硬件支持度更好,可以解决MPP数据库的几个关键架构问题。本文介绍分布式分析型数据库。 — 背景介绍— 目前在分布式分析型数据库领域,

    2023年04月14日
    浏览(57)
  • unity链接MySQL数据库,并实现游戏数据的存储和读取。(一)

    先说明一下,本次测试中MySQL是安装在本机上的,如果你要想实现在任何地方访问你的数据库建议使用阿里云的RDS云数据库,你需要注册一个阿里云的账号,然后购买实例等等,这些购买实例、创建白名单、创建数据库、创建账号等在阿里云的帮助文档里都写的很详细了,翻

    2024年02月07日
    浏览(46)
  • 300个智商测试FLASH智商游戏ACCESS数据库

    最近在找IQ测试方面的数据,网上大多只留传着33道题这种类型,其他的又因各种条件(比如图片含水印等)不能弄,这是从测智网下载的一些测试智商的游戏数据,游戏文件是FLASH的,扩展名是SWF。       数据包总容量约为800M,截图下方有显示“共有记录数”,截图包含了

    2024年02月14日
    浏览(37)
  • 游戏攻略|基于Springboot和vue的游戏分享平台系统设计与实现(源码+数据库+文档)

    游戏攻略分享平台 目录 基于Springboot和vue的游戏分享平台系统设计与实现 一、前言 二、系统设计 三、系统功能设计  1、前台: 2、后台 管理员功能模块 四、数据库设计  五、核心代码  六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍 :✌️大厂码农

    2024年04月08日
    浏览(60)
  • 人大金仓分析型数据库配置数据库参数

    目录 前言 设置配置参数 设置本地配置参数 设置master配置参数  设置系统级别参数  设置数据库级别参数  设置角色级别参数  设置会话级别参数  查看服务器配置参数设置          据库的配置文件postgresql.conf 位于数据库实例的数据目录之下。master和每一个 实例都有自

    2024年02月09日
    浏览(55)
  • 【数据库原理】(29)数据库设计-需求分析阶段

    需求分析就是调查、收集、分析、最后定义用户对数据库的各种要求。它是整个数据库设计的基础和出发点,其结果将直接影响后面各步的设计,甚至决定着最终设计的数据库的好坏与成败。为此,首先必须知道需求分析的任务是什么,以及采用什么样的方法进行需求分析。 这阶

    2024年01月17日
    浏览(57)
  • unity存储信息的方式,保存读取背包、游戏进度,连接MySQL数据库

    为了在Unity中存储信息,有几种方法可供选择。最常见的方法是 PlayerPrefs、Serialization和Database 。 PlayerPrefs是一种简单的存储小量数据(如玩家偏好或游戏设置)的方法。它易于使用,不需要任何外部库。但是,不建议用于存储大量数据或敏感信息。 Serialization是另一种在Unit

    2024年02月09日
    浏览(60)
  • 案例分析真题-数据库

    【问题1】 【问题2】 【问题3】 【问题1】 【问题2】 【问题3】 骚戴理解 :这里主要是要学会分析出题目中哪里用到了反规范化技术,主打的就是一个会分析! 【问题1】 【问题2】 【问题3】 【问题1】 【问题2】 骚戴理解 :这题第二小问,根据它给出的客户基本信息用关系

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包