首页 > 数据库 >【SQL】连续登录

【SQL】连续登录

时间:2024-08-17 13:59:11浏览次数:6  
标签:登录 Activity event player 连续 SQL date id

目录

题目

分析

代码


题目

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

分析

报告在首次登录的第二天再次登录的玩家的 比率

几个keywords,首次登录,翌日再次登录,玩家比率

本质上是一个连续登录,含首次连续两天,

首次登录

针对同一palyer_id, group by player_id

通过min函数即可实现,min(event_date)

含首次连续两天

通过date_add(date,INTERVAL expr type)函数向日期添加指定的时间间隔

这里先获取首次登录日期增加一天的日期,date_add(min(event_date), interval 1 day)

然后通过where in将增加一天的日期与表中登录日期比对,获取存在的第二天的日期

where (player_id, event_date) in

(select player_id, date_add(min(event_date), interval 1 day) from Activity group by player_id)

计算比率,四舍五入到小数点后两位。

round(count(*)/(select count(distinct player_id) from Activity), 2)

代码

select round(count(*)/(select count(distinct player_id) from Activity), 2) fraction
from Activity
where (player_id, event_date) in 
    (select player_id, date_add(min(event_date), interval 1 day)
    from Activity 
    group by player_id)

标签:登录,Activity,event,player,连续,SQL,date,id
From: https://blog.csdn.net/weixin_73404807/article/details/141275521

相关文章

  • MySQL数据库基础
    目录1.数据库的操作1.1  创建数据库1.2查看数据库1.3选中数据库1.4删除数据库2.常用数据类型2.1数值类型2.2字符串类型2.3日期类型3.表的操作3.1创建表3.2查看所有表3.3查看表的结构3.4删除表4.内容重点总结5.练习1.数据库的操作1.1  ......
  • MySQL数据库入门,pycharm连接数据库—详细讲解
    一.安装MySQL1.常用MySQL5.7,首先安装MySQL,(一) (二)(三)(四)(五)2.配置环境变量打开MySQL安装路径,在其中找到bin文件,复制路径,打开系统高级设置,点击环境变量,在下方找到path,将bin文件路径粘贴其中。3.检验安装是否完成win+r 输入cmd,打开命令提示符,输入指令:netstart|......
  • Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)
    目录准备工作一.Xshell中操作(1)在虚拟机中安装mysql(2)连接Windows数据库(3)进入linux数据库。(4)修改mysql配置文件二.Windows命令窗口操作 需要软件虚拟机,Xshell。准备工作1.首先需要打开虚拟机,然后在终端上安装ssh,远程传输协议。安装指令为:sudo apt install......
  • 信号与系统MATLAB仿真实验:连续时间系统的频域分析、复频域分析
    一、实验内容(1)仔细阅读并验证执行程序示例symstFw=fourier(exp(-2*abs(t)))symstwft=ifourier(1/(1+w^2),t)ft=4*cos(12*pi*t)*(heaviside(t+1/4)-heaviside(t-1/4));Fw=simplify(fourier(ft))subplot(121)ezplot(ft,[-0.50.5]),gridonsubplot(122)ezplot......
  • Linux 中 实现每一行连续重复
     001、sed实现[root@PC1test]#lsa.txt[root@PC1test]#cata.txt##测试数据010203040506070809101112131415161718192021222324252627282930[root@PC1test]#sed'1~1p'a.txt##每行连续重复两次......
  • h5直播源码,用户登录流程及权限校验
    h5直播源码,用户登录流程及权限校验今天我们来看一下用户登录的流程前端部分 以一个后台管理系统登录为例:登录篇1.用户输入账号和密码点击登录传给服务器用户名和密码2.服务器验证成功后给客户端传递一个token,并且把这个token存在cookies中,这样下次再向服务器发请......
  • 【漏洞复现】某骋BPM Handler SQL注入漏洞
               声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。一、漏洞描述某骋BPM系统是一款全面的商业流程管理平台,旨在帮助企业自动化和优化业务流程。它集成了工作流引擎、表单......
  • 坑!火山引擎云数据库 MySQL 版节点内存只增不减
    火山引擎云数据库说明文档什么是云数据库MySQL版?云数据库MySQL版是火山引擎基于开源数据库MySQL打造的弹性、可靠的在线关系型数据库服务。MySQL实例使用云原生方式部署,结合本地SSD存储类型,提供高性能读写能力;完全兼容MySQL引擎,并提供实例管理、备份恢复、日志管理......
  • Debian修改了sshconfig之后仍无法root登录ssh
    1.检查/etc/ssh/sshd_config是否限制了登录session对话数等其他相关配置2.检查用户账户状态passwd-Sroot命令检查root用户的状态。假如返回:rootL03/28/20220999997-1rootL03/28/20220999997-1●L:表示密码被锁定。●03/28/2022:密码最后一次更改的......
  • Mysq-造数工具mysql_random_data_load
    1.背景实际开发中,做sql优化,为确保可行性,可能需要模拟出大量数据验证。此处,介绍一个造数工具mysql_random_data_load,体验了下,很方便。2.使用2.1下载下载:mysql_random_data_load(releases页面)选择合适的版本,例如。2.2安装上传到服务器直接解压即可。tar-zxvfmysql_r......