leetcode 1097. 游戏玩法分析 V
计算第一天的留存率

法一:窗口函数

  1. 找到安装游戏的时间,及每个玩家第一次登陆的时间,通过min()+窗口函数,可以既找到最小值,又保留原来的值。(若使用聚合函数group by则只能保留一组数)
select player_id,event_date,min(event_date) over(partition by player_id) install_dt
from Activity;
  1. 计算第一天的登陆玩家人数,和第二天仍然登陆的人数。用group by分组计算。
select distinct install_dt,count(distinct player_id) installs,round(sum(if datediff(event_date,install_date)=1,1,0)/count(distinct player_id),2) Day1_retention
from
(select player_id,event_date,min(event_date) over(partition by player_id) install_dt
from Activity) t
group by install_dt;

法二:自连接

  1. 计算第一天登陆时间
  2. 通过左连接能够得到第一天登陆的id以及第二天是否继续登陆的信息,如果第二天没有登陆,则为null。count(*)会将null算入。
select distinct install_dt,count(*) installs,round(count(t2.event_date)/count(*),2) Day1_retention
from
(select player_id,min(event_date) install_dt
from Activity
group by player_id) t1
left join Activity t2
on t1.player_id = t2.player_id
and datediff(t2.event_date,t1.install_dt)=1
group by install_dt;

左连接得到的结果如下

t1.player_id t1.install_dt t2.player_id t2.event_date
1 2016-03-01 1 2016-03-02
2 2017-06-25 null null
3 2016-03-01 null null

SQL面试必考——计算留存率相关推荐

  1. SQL面试必会50题(含答案和学习链接)

    最近在刷 sql 题,刷完了网上的 SQL 面试必会 50 题,现把我的答案和思路整理如下,供大家参考. 这是目录 一.创建四张表 二.SQL面试必会50题(不含答案) 三.SQL面试必会50题(含答 ...

  2. 面试必考的网络协议相关题目应该如何回答

    转载自  面试必考的网络协议相关题目应该如何回答 最近,正处于校招季.很多小伙伴已经拿到了如愿以偿的Offer,有些小伙伴还在努力着. 平常,也会有一些粉丝会在公众号留言,或者在微信上问我一些面试题. ...

  3. 最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏

    过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服.天猫.淘宝.头条.拼多多等Java面试题目. 过去2年,我已经成功的帮助了部分同学进入了大厂. 2020开始,我依然会为大家 ...

  4. 环形链表【手绘漫画】面试必考之双指针(LeetCode 141)

    文章目录 图解算法与数据结构 1.前言 2.实例 3.正文 4.代码 图解算法与数据结构 1.前言 今天开始的是双指针! 下面一起来看看吧!!! 让我们从一个经典问题开始: 环形链表进阶版[手绘漫画] ...

  5. 10 道大厂面试必考的计算机网络问题-陶辉 极客时间

    大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是 ...

  6. 175 道面试必考 Go 语言题目详细解答

    随着2010年代初云计算的兴起,这一转变掀起了浪潮.各大互联网巨头在技术战略层面,都试图把握此次潮流,举起了云计算的大旗. 随着云计算时代愈演愈烈,Go 语言的应用也越来越广泛,已然成为首选编程语言. ...

  7. js面试必考:this

    this是前端面试中必考的基础知识点,也是新手小白在做项目中经常晕头转向的问题.但其实this不难理解. 判断this指向时,记住以下几点: 判断函数类型, 1.1 如果是箭头函数,则为第一个包裹箭头 ...

  8. Java 面试必考难点,这一个教程全搞定

    "用代码行来衡量开发进度,无异于用重量来衡量制造飞机的进度." - Bill Gates 作为当下应用面最广泛的编程语言,Java 已经被广泛应用于几乎所有领域,包括 web 应用 ...

  9. Linux进程O(1)调度算法,面试必考哦

    进程调度有很多方法,这里只讨论Linux下的进程调度,先说下,这个是高端面试必考题,既然我发文了,大家最好看看,而且目前看到的写得最好的文章,推荐给大家. ==== Linux是一个支持多任务的操作系 ...

最新文章

  1. 彻底解决Spring mvc中时间的转换和序列化等问题
  2. BufferedReader 和BufferedWriter
  3. function 与 + - !~
  4. 反汇编程序导致程序crash的解决思路
  5. java中Robot
  6. 一些移动端开发的细节记录
  7. Proteus常见电平状态
  8. Java 字节和字符流的读写+Buffered
  9. php算法入门,a011.PHP实战:加密解密,简单算法入门
  10. php网站怎么优化,如何优化你的Z-BlogPHP网站
  11. MATLAB代码:基于分时电价条件下家庭能量管理策略研究
  12. Python全栈笔记(六)
  13. java实现登录注册界面
  14. 某云不限速破解详细教程附工具
  15. 模拟时钟:时钟根据时间转动
  16. 虚拟私助理要来了,五个行业将受影响人 | 分析
  17. 微信小程序----布局适配与物理逻辑像素
  18. Unity 3D 游戏编程设计g03
  19. 数学建模 ————统计问题之预测(一)
  20. C#中FileStream与StreamReader/StreamWriter区别

热门文章

  1. flutter页面布局HTML,Flutter开发实战初级(2)页面布局详解
  2. 学python之前需要学什么,学好python需要什么基础
  3. 华为MateBook E二合一笔记本发布:首次采用OLED原色屏
  4. 基于c#的区块链编程_3.区块链 · C#区块链编程入门教程-巴比特图书
  5. Vue和layUI的区别何在?
  6. php zen kaku代表什么,Convert kana one from another (zen-kaku, han-kaku and more) - PHP 7 中文文档...
  7. TP-LINK路由器配置
  8. 阿里巴巴原来这么容易就能进去…
  9. “幽灵刹车”困扰特斯拉
  10. 简单记账本-android版