首页 > 数据库 >力扣550(MySQL)-游戏玩法分析Ⅳ(中等)

力扣550(MySQL)-游戏玩法分析Ⅳ(中等)

时间:2023-03-22 12:33:45浏览次数:61  
标签:登录 550 event 力扣 player MySQL date id SELECT

题目:

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

查询结果格式如下所示:

 解题思路:

①先将登录日期上移一行,方便筛选出连续登录数;

1 SELECT 
2     player_id, 
3     event_date, 
4     lead ( event_date, 1 ) over (partition by player_id ORDER BY event_date ) AS after_date
5 FROM activity;   

②筛选出连续两天登录的用户数;

1 SELECT count( * ) AS nums1 
2 FROM ( 
3       SELECT 
4          player_id, 
5          event_date, 
6          lead ( event_date, 1 ) over (partition by player_id ORDER BY event_date ) AS after_date 
7       FROM activity ) AS temp 
8 WHERE datediff(after_date, event_date ) = 1;

 ③求出玩家总数,注意去重;

1 SELECT count( DISTINCT player_id ) AS total_num 
2 FROM activity;

 ④使用笛卡尔积拼接一下,计算结果。

 方法二:

①先求出所有玩家的第一次登录时间

1 SELECT
2    player_id,
3    MIN(event_date) AS first_date
4 FROM Activity
5 GROUP BY player_id;

 ②将原表与第一步求出来的临时表进行左连接;

1 select *
2 from activity a
3 left join (SELECT
4        player_id,
5        MIN(event_date) AS first_date
6      FROM Activity
7       GROUP BY player_id) as b
8 on a.player_id = b.player_id and datediff(event_date,first_date) = 1;

 ③统计出左右两个表的数量,进行计算;

 小知识:

①lead() over:

1.点击这里可以看语法 

2.这里也可以

②左右内连接:跳转这里看笔记

标签:登录,550,event,力扣,player,MySQL,date,id,SELECT
From: https://www.cnblogs.com/liu-myu/p/17243259.html

相关文章

  • Node-RED中连接Mysql数据库并实现增删改查的操作
    场景Node-RED中建立静态网页和动态网页内容:Node-RED中建立静态网页和动态网页内容_霸道流氓气质的博客-在上面的基础上,怎样实现连接Mysql数据库并将数据库中的数据显示在网......
  • 虹科分享|虹科Redis企业版数据库带你跑赢MySQL数字时代!
    数字革命悄然爆发,数据库也将成为率先破局的关键技术! 借着互联网爆发的东风,前几年MySQL以其过硬的产品能力及开源优势,一度成为全球最受欢迎的关系型数据库。然而,革命的......
  • mysql数据库恢复 mysql中毒解密恢复 ibd文件恢复数据
    mysql数据库ibd文件 ibdata1文件 被勒索病毒加密怎么恢复,速战速决。在线观看  http://www.sql110.com/pic/ibd.mp4  ......
  • 高效实现 MySQL 与 elasticsearch 的数据同步
    注:本文转自:https://www.toutiao.com/article/7206119975793410615/?log_from=8164cd03bb377_1679446916178MySQL自身简单、高效、可靠,是又拍云内部使用最广泛的数据库。......
  • Mysql基本语法
    Mysql数据库基本语法:Mysql完整语法体系......
  • MySQL基础:函数
    MySQL基础:函数函数是指一段可以直接被另一段程序调用的程序或代码。字符串函数MySQL中内置了很多字符串函数,常用的几个如下:函数功能CONCAT(S1,S2,...Sn)字符......
  • MySQL随记
    1、orvsunion对于单列来说,用or是没有任何问题的,但是or涉及到多个列的时候,每次select只能选取一个index,如果选择了area,population就需要进行table-scan,即全部扫描一遍,但......
  • MySQL介绍
    MySQL数据库最初是由瑞典MySQLAB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支......
  • MySQL介绍
    MySQL数据库最初是由瑞典MySQLAB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支......
  • MySQL介绍
    MySQL数据库最初是由瑞典MySQLAB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统,同时它也是一个支......