SQL-每日一题【550.游戏玩法分析Ⅳ】

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

题目

Table: Activity

SQL-每日一题【550.游戏玩法分析Ⅳ】,SQL每日一题,sql,游戏,数据库

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

查询结果格式如下所示:

SQL-每日一题【550.游戏玩法分析Ⅳ】,SQL每日一题,sql,游戏,数据库

 文章来源地址https://www.toymoban.com/news/detail-545536.html

解题思路

前置知识

1.ROUND() 函数

ROUND() 函数用于把数值字段舍入为指定的小数位数。

语法

SELECT ROUND(column_name,decimals) FROM TABLE_NAME;

2.DATE_ADD()函数

DATE_ADD() 函数向日期添加指定的时间间隔。

语法

DATE_ADD(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

知道了上述函数用法后我们来解决这道题

1.题目要求我们查询首次登录的玩家第二天再次登录的玩家的比率,我们先查询出首次登录的日期(最小日期)然后+1(不论表中存不存在这个日期,先把这个日期创建出来)

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

2.where条件是表中存在这样一个id和日期(就是已经+1的日期,如果存在就符合条件,如果不存在就过滤掉)

where
        (player_id,event_date)
        in
        (select player_id,date_add(min(event_date),interval 1 day) from activity group by player_id)

3.查找存在的id统计结果/总的id数

select 
    round(count(distinct player_id)/(select count(distinct player_id) from activity),2 ) as fraction
    from
    activity

代码实现

select 
    round(count(distinct player_id)/(select count(distinct player_id) from activity),2 ) as 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)

运行结果

SQL-每日一题【550.游戏玩法分析Ⅳ】,SQL每日一题,sql,游戏,数据库

 

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

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

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

相关文章

  • SQL-每日一题【1341. 电影评分】

    表: Movies 表: Users   请你编写一个解决方案: 查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。 查找在  February 2020  平均评分最高  的电影名称。如果出现平局,返回字典序较小的电影名称。 字典序  ,即按字母在字典中出现顺序对字符串排序

    2024年02月12日
    浏览(33)
  • SQL-每日一题【595.大的国家】

    World  表: 如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即,3000000 km2),或者 人口至少为 2500 万(即 25000000) 编写一个 SQL 查询以报告 大国 的国家名称、人口和面积。 按 任意顺序 返回结果表。 查询结果格式如下例所示。 示例

    2024年02月13日
    浏览(34)
  • SQL-每日一题【1193. 每月交易 I】

    Table:  Transactions 编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。 以 任意顺序 返回结果表。 查询结果格式如下所示。 示例 1:     1.题目要求我们查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额

    2024年02月13日
    浏览(32)
  • SQL-每日一题【585.2016年的投资】

    Insurance  表: 请你编写一个 SQL 查询,报告 2016 年 (tiv_2016) 所有满足下述条件的投保人的投保金额之和: 他在 2015 年的投保额 (tiv_2015) 至少跟一个其他投保人在 2015 年的投保额相同。 他所在的城市必须与其他投保人都不同(也就是说 (lat, lon) 不能跟其他任何一个投保人完全

    2024年02月17日
    浏览(41)
  • SQL-每日一题【584.寻找用户推荐人】

    给定表  customer  ,里面保存了所有客户信息和他们的推荐人。 写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都  不是  2。 对于上面的示例数据,结果为:    1.题目要求查询列表中客户的推荐人的编号都  不是  2 和为 null 的客户。我们直接使用 where

    2024年02月13日
    浏览(35)
  • SQL-每日一题【1173. 即时食物配送 I】

     配送表:  Delivery 如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。 查询即时订单所占的百分比, 保留两位小数。 查询结果如下所示。 示例 1:     1.题目要求我们查询出顾客期望的配送日期和下单日期相同的记录所占百分比

    2024年02月14日
    浏览(38)
  • SQL-每日一题【1517. 查找拥有有效邮箱的用户】

    表:  Users 编写一个解决方案,以查找具有有效电子邮件的用户。 一个有效的电子邮件具有前缀名称和域,其中:   前缀  名称是一个字符串,可以包含字母(大写或小写),数字,下划线  \\\'_\\\'  ,点  \\\'.\\\'  和/或破折号  \\\'-\\\'  。前缀名称  必须  以字母开头。 域  为  \\\'@le

    2024年02月12日
    浏览(40)
  • SQL-每日一题【1484. 按日期分组销售产品】

    表  Activities : 编写解决方案找出每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按  sell_date  排序的结果表。 结果表结果格式如下例所示。 示例 1:     前置知识 group_concat函数的功能 将group by产生的同一个分组中的值连接起来

    2024年02月13日
    浏览(42)
  • 【Hive SQL 每日一题】统计用户连续下单的日期区间

    测试数据 需求说明 统计用户连续下单的日期区间,所以连续的下单日期必须 = 2 ,例如: 2023-01-01,2023-01-02 。 分析步骤如下: 按 user_id 、 order_date 进行分组,同天的下单日期只保留一条。 使用 row_number 窗口函数对行号进行标记。 使用 date_sub 函数与行号标记进行运算,如果

    2024年02月09日
    浏览(35)
  • SQL- 每日一题【1327. 列出指定时间段内所有的下单产品】

    表:  Products 表:  Orders   写一个解决方案,要求获取在 2020 年 2 月份下单的数量不少于 100 的产品的名字和数目。 返回结果表单的  顺序无要求  。 查询结果的格式如下。 示例 1:         1.题目要求我们获取在 2020 年 2 月份下单的数量不少于 100 的产品的名字和数目。 2.首先

    2024年02月13日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包