zoukankan      html  css  js  c++  java
  • SQL练习题41:牛客每天有很多人登录,请你统计一下牛客新登录用户的次日成功的留存率

    题目:(具体题目细节去看牛客,不能插入图片)

    牛客每天有很多人登录,请你统计一下牛客新登录用户的次日成功的留存率,
    有一个登录(login)记录表,简况如下:

    第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备第一次新登录了牛客网
    。。。

    第4行表示id为3的用户在2020-10-12使用了客户端id为2的设备登录了牛客网
    。。。
    最后1行表示id为1的用户在2020-10-14使用了客户端id为2的设备登录了牛客网



    请你写出一个sql语句查询新登录用户次日成功的留存率,即第1天登陆之后,第2天再次登陆的概率,保存小数点后面3位(3位之后的四舍五入),上面的例子查询结果如下:

    查询结果表明:
    id为1的用户在2020-10-12第一次新登录了,在2020-10-13又登录了,算是成功的留存

    id为2的用户在2020-10-12第一次新登录了,在2020-10-13又登录了,算是成功的留存

    id为3的用户在2020-10-12第一次新登录了,在2020-10-13没登录了,算是失败的留存
    id为4的用户在2020-10-13第一次新登录了,在2020-10-14没登录了,算是失败的留存

    固次日成功的留存率为 2/4=0.5
    (sqlite里查找某一天的后一天的用法是:date(yyyy-mm-dd, '+1 day'),四舍五入的函数为round,sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5)

    代码:

    SELECT ROUND(COUNT(l1.user_id) * 1.0 / COUNT(l2.user_id), 3) AS p
    FROM
    (SELECT user_id, min(date) AS date
    FROM login
    GROUP BY user_id) AS l2
    LEFT JOIN login AS l1
    ON l1.user_id = l2.user_id
    AND l1.date = date(l2.date,'+1 day');
    
  • 相关阅读:
    4.9cf自训9..
    数位dp-入门模板题 hdu2089
    熟能生巧 汽车停车入位技巧解析-倒车入库--侧边停车
    MyBatis参数传入集合之foreach动态sql
    jquery如何判断checkbox(复选框)是否被选中
    Mybatis关联查询(嵌套查询)
    Mysql 分页语句Limit用法
    $.ajax返回的JSON格式的数据后无法执行success的解决方法
    JavaWeb学习总结(十二)——Session
    Spring MVC中Session的正确用法之我见
  • 原文地址:https://www.cnblogs.com/zhuozige/p/13908799.html
Copyright © 2011-2022 走看看