力扣550 游戏玩法分析 IV

目录

题目描述

思路整理

1. 首次登录日期

2. 第二天登录

3. 计算比率

实现思路

完整代码及解释


题目描述

Table: Activity

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

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

结果格式如下所示:

示例 1:

输入:
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            |
+-----------+-----------+------------+--------------+
输出:
+-----------+
| fraction  |
+-----------+
| 0.33      |
+-----------+
解释:
只有 ID 为 1 的玩家在第一天登录后才重新登录,所以答案是 1/3 = 0.33

思路整理

1. 首次登录日期

首先,我们需要找到每位玩家的首次登录日期。这可以通过对每个 player_idevent_date 进行分组并选择最小的日期来实现。

2. 第二天登录

然后,我们需要找出那些在首次登录之后的第二天也有登录记录的玩家。这可以通过检查每位玩家的登录记录,看看是否存在一个登录日期正好是首次登录日期后一天的记录。

3. 计算比率

最后,我们计算符合第二天登录条件的玩家数量,然后除以总的独特玩家数量,得到所需的比率。

实现思路

为了实现上述步骤,我们可以使用以下策略:

  1. 子查询/CTE:首先通过一个子查询或CTE(公共表表达式)来确定每位玩家的首次登录日期。
  2. 关联查询:然后将原始 Activity 表与上述结果进行关联,以找出那些在首次登录后第二天有登录记录的玩家。
  3. 聚合和计算:通过聚合函数计算符合条件的玩家数量,再除以总的独特玩家数量,最后使用 ROUND 函数格式化结果。

完整代码及解释

WITH FirstLogin AS (
  SELECT player_id, MIN(event_date) AS first_login_date
  FROM Activity
  GROUP BY player_id
)

SELECT ROUND(
  COUNT(DISTINCT a.player_id) / (SELECT COUNT(DISTINCT player_id) FROM Activity), 
  2
) AS fraction
FROM Activity a
JOIN FirstLogin fl ON a.player_id = fl.player_id
WHERE a.event_date = DATE_ADD(fl.first_login_date, INTERVAL 1 DAY);

通过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/417510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为自动驾驶技术详解报告分享

ADS2.0首发搭载问界M5智驾版,城市NCA计划年底全国开通。2023年4月16日华为在智能汽车解决方案发布会上发布了最新的ADS2.0产品,硬件数量减少至27个(11个摄像头12个超声波雷达3个毫米波雷达1个激光雷达,ADS1.0有34个),车载计算平台改为MDC610&…

苹果ios群控软件开发常用源代码分享!

在移动软件开发领域,苹果设备由于其封闭性和安全性受到了广大开发者的青睐,然而,这也为开发者带来了一些挑战,特别是在进行群控软件开发时。 群控软件是指可以同时控制多台设备的软件,这在自动化测试、批量操作等场景…

网络编程难点之select、poll与epoll详解

前言 为什么需要I/O多路复用技术? 首先,I/O多路复用技术主要被应用在需要高性能的网络服务器程序中。 高性能网络服务器程序需要做的事情就是供多个客户端同时进行连接并处理客户端传送过来的数据请求: 对于这种情况,很多人自然…

二叉树——二叉树所有路径

二叉树所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->2->5","1-…

leetcode刷题日记-合并N个升序链表

题目描述 解题思路 相信大家都做过两个有序链表合并的习题吧。该题的解决思路是建立在两个有序链表合并的基础上。使用的方法是递归。 两个有序链表合并思路 1.如果其中一个链表为空,直接返回另一个链表,因为一个空链表和非空链表的合并结果就是非空链…

在微服务整合dubbo,以为微服务版的若依为例

在微服务整合dubbo,以为微服务版的若依为例 一、环境二、整合过程1、父模块依赖2、生产者3、消费者 三、修改若依的服务调用方式为dubbo1、改造系统模块2、改造认证授权中心 四、整合过程遇到的问题1、出现循环引用2、出现依赖冲突3、启动出现端口号被占用4、出现某…

windows U盘不能识别

windows U盘不能识别 1、问题描述2、问题分析解决3、把U盘插到windows电脑上试试能不能识别 1、问题描述 windwos u盘不能识别 u盘被拿到mac电脑上做了启动盘之后,就不能被windows识别了。题主很奇怪里面被mac电脑的同学放了什么,因此想到把优盘挂载到L…

【LeetCode周赛】第 386 场周赛

目录 3046. 分割数组 简单3047. 求交集区域内的最大正方形面积 中等3048. 标记所有下标的最早秒数 I 中等 3046. 分割数组 简单 3046. 分割数组 分析: 查看数组内有没有重复超过2次的数即可。 代码: class Solution { public:bool isPossibleToSplit…

类和对象(2)——距离C++又近了一步

目录 一、构造函数 1.1声明和定义构造函数 1.2成员名和参数名 1.3构造函数的使用 1.4初始化列表 二、析构函数 2.1析构函数的概念 2.2析构函数的性质 三、拷贝构造函数 四、赋值运算符重载 4.1运算符重载 4.2赋值运算符重载 一、构造函数 我们知道,C中…

Python:练习:输出int值a占b的百分之几。例如:输入1和4,输出:25%。

案例: 输出int值a占b的百分之几。例如:输入1和4,输出:25%。 思考: 所有的一步步思考,最后综合起来。 首先,确定 输出,那么就用input,而且是int值,所以肯定…

用vivado创建一个赛灵思AXI的IP核

一、新建一个管理IP的任务 二、设置板子,verilog语言和文件位置 三、创建新的IP核 添加一个axi-full的master接口和axi-full的slave接口 四、查看赛灵思AXI代码 第一个是axi的master接口代码,下面的是axi的slave接口代码 五、打包IP核以供后续使用 六、…

请求响应与统一响应结果

1.请求响应 1.安装postman 2.简单的参数 //原始的请求参数的方法RequestMapping("/simoleParam")public String simpleParam(HttpServletRequest request){String name request.getParameter("name");String ageStr request.getParameter("age&quo…

逻辑电路集成块手册

还在查找74XX集成块的数据手册吗,还在找逻辑门电路的手册吗 不用找了,直接打开此电子书,查找就可以了,内部框图,真值表引脚序号都有DOWNLOAD:https://www.ti.com/lit/pdf/scyd013?keyMatchLOGIC%20POCKET%20DATA%20BOOK 失效直接上TI官方网站搜索logic pocket data book即可搜…

【web APIs】5、(学习笔记)有案例!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、js组成window对象定时器-延迟函数location对象navigator对象histroy对象 二 、本地存储(今日重点)localStorage(重点&am…

FLask会话技术和Flask模板语言

二、FLask会话技术和Flask模板语言 1.会话技术 cookie 客户端的会话技术:让服务器认识浏览器,常用于登录 cookie本身由浏览器保存,通过Response将cookie写到浏览器上,下一次访问,浏览器会根据不同的规则携带cookie过…

【leetcode】链表分割

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 方法1. 不用哨兵位方法2. 用哨兵位 点击查看题目 思路: 将链表分为2个链表list1和list2,…

Cookie、Session和JWT

摘要:Cookie、Session和JWT都不是什么新的技术了,最近用到了就比较和总结下。 我们知道http协议是无状态的,用户登录后如何验证和保存用户状态呢?下面来介绍 1. 使用Cookie和Session验证登录状态 session是保存在服务端的一种数…

【中科院计算所】WSDM 2024冠军方案:基于大模型进行多文档问答

作者:李一鸣 张兆 中科院计算所 会话式多文档问答旨在根据检索到的文档以及上下文对话来回答特定问题。 在本文中,我们介绍了 WSDM Cup 2024 中“对话式多文档 QA”挑战赛的获胜方法,该方法利用了大型语言模型 (LLM) 卓越的自然语言理解和生…

项目解决方案: 实时视频拼接方案介绍

目 录 1、实时视频拼接概述 2、适用场景 3、系统介绍 3.1拼接形式 3.1.1横向拼接 3.1.2纵向拼接 3.2前端选择 3.2.1前端类型 3.2.2推荐配置 3.3后端选择 3.3.1录像回放 3.3.2客户端展示 4、拼接方案介绍 4.1基于4K摄像机的拼接方案 4.1.1系统架构…

安秉源代码加密,不仅可以正常加密,对编译调试无任何影响

源代码防泄密对于很多企业来讲都在使用,特别是在广东一些做智能制造的企业,这些企业在很早就意识到源代码防泄密的重要性,很多企业采用加密的方式对企业的源代码进行加密,也采用了相对应的加密软件,但是在使用一些加密…
最新文章