SQL面试必考——计算留存率
leetcode 1097. 游戏玩法分析 V
计算第一天的留存率
法一:窗口函数
- 找到安装游戏的时间,及每个玩家第一次登陆的时间,通过min()+窗口函数,可以既找到最小值,又保留原来的值。(若使用聚合函数group by则只能保留一组数)
select player_id,event_date,min(event_date) over(partition by player_id) install_dt
from Activity;
- 计算第一天的登陆玩家人数,和第二天仍然登陆的人数。用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;
法二:自连接
- 计算第一天登陆时间
- 通过左连接能够得到第一天登陆的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面试必考——计算留存率相关推荐
- SQL面试必会50题(含答案和学习链接)
最近在刷 sql 题,刷完了网上的 SQL 面试必会 50 题,现把我的答案和思路整理如下,供大家参考. 这是目录 一.创建四张表 二.SQL面试必会50题(不含答案) 三.SQL面试必会50题(含答 ...
- 面试必考的网络协议相关题目应该如何回答
转载自 面试必考的网络协议相关题目应该如何回答 最近,正处于校招季.很多小伙伴已经拿到了如愿以偿的Offer,有些小伙伴还在努力着. 平常,也会有一些粉丝会在公众号留言,或者在微信上问我一些面试题. ...
- 最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏
过去2年我持续分享了BAT TMD为代表的大厂最新面试题目,特别是蚂蚁金服.天猫.淘宝.头条.拼多多等Java面试题目. 过去2年,我已经成功的帮助了部分同学进入了大厂. 2020开始,我依然会为大家 ...
- 环形链表【手绘漫画】面试必考之双指针(LeetCode 141)
文章目录 图解算法与数据结构 1.前言 2.实例 3.正文 4.代码 图解算法与数据结构 1.前言 今天开始的是双指针! 下面一起来看看吧!!! 让我们从一个经典问题开始: 环形链表进阶版[手绘漫画] ...
- 10 道大厂面试必考的计算机网络问题-陶辉 极客时间
大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是 ...
- 175 道面试必考 Go 语言题目详细解答
随着2010年代初云计算的兴起,这一转变掀起了浪潮.各大互联网巨头在技术战略层面,都试图把握此次潮流,举起了云计算的大旗. 随着云计算时代愈演愈烈,Go 语言的应用也越来越广泛,已然成为首选编程语言. ...
- js面试必考:this
this是前端面试中必考的基础知识点,也是新手小白在做项目中经常晕头转向的问题.但其实this不难理解. 判断this指向时,记住以下几点: 判断函数类型, 1.1 如果是箭头函数,则为第一个包裹箭头 ...
- Java 面试必考难点,这一个教程全搞定
"用代码行来衡量开发进度,无异于用重量来衡量制造飞机的进度." - Bill Gates 作为当下应用面最广泛的编程语言,Java 已经被广泛应用于几乎所有领域,包括 web 应用 ...
- Linux进程O(1)调度算法,面试必考哦
进程调度有很多方法,这里只讨论Linux下的进程调度,先说下,这个是高端面试必考题,既然我发文了,大家最好看看,而且目前看到的写得最好的文章,推荐给大家. ==== Linux是一个支持多任务的操作系 ...
最新文章
- 彻底解决Spring mvc中时间的转换和序列化等问题
- BufferedReader 和BufferedWriter
- function 与 + - !~
- 反汇编程序导致程序crash的解决思路
- java中Robot
- 一些移动端开发的细节记录
- Proteus常见电平状态
- Java 字节和字符流的读写+Buffered
- php算法入门,a011.PHP实战:加密解密,简单算法入门
- php网站怎么优化,如何优化你的Z-BlogPHP网站
- MATLAB代码:基于分时电价条件下家庭能量管理策略研究
- Python全栈笔记(六)
- java实现登录注册界面
- 某云不限速破解详细教程附工具
- 模拟时钟:时钟根据时间转动
- 虚拟私助理要来了,五个行业将受影响人 | 分析
- 微信小程序----布局适配与物理逻辑像素
- Unity 3D 游戏编程设计g03
- 数学建模 ————统计问题之预测(一)
- C#中FileStream与StreamReader/StreamWriter区别
热门文章
- flutter页面布局HTML,Flutter开发实战初级(2)页面布局详解
- 学python之前需要学什么,学好python需要什么基础
- 华为MateBook E二合一笔记本发布:首次采用OLED原色屏
- 基于c#的区块链编程_3.区块链 · C#区块链编程入门教程-巴比特图书
- Vue和layUI的区别何在?
- php zen kaku代表什么,Convert kana one from another (zen-kaku, han-kaku and more) - PHP 7 中文文档...
- TP-LINK路由器配置
- 阿里巴巴原来这么容易就能进去…
- “幽灵刹车”困扰特斯拉
- 简单记账本-android版