SQL練習00012
Activity 活動記錄表
(player_id,event_date)是此表的主鍵
這張表顯示了某些遊戲的玩家的活動情況
每一行是一個玩家的記錄,他在某一天使用某個裝置登出之前登入並玩了很多遊戲(可能是 0)
我們將玩家的安裝日期定義為該玩家的第一個登入日。
我們還將某個日期 X 的第 1 天留存時間定義為安裝日期為 X 的玩家的數量,他們在 X 之後的一天重新登入,除以安裝日期為 X 的玩家的數量,四捨五入到小數點後兩位。
編寫一個 SQL 查詢,報告每個安裝日期、當天安裝遊戲的玩家數量和第一天的留存時間。
查詢結果格式如下所示:
玩家 1 和 3 在 2016-03-01 安裝了遊戲,但只有玩家 1 在 2016-03-02 重新登入,所以 2016-03-01 的第一天留存時間是 1/2=0.50
玩家 2 在 2017-06-25 安裝了遊戲,但在 2017-06-26 沒有重新登入,因此 2017-06-25 的第一天留存時間為 0/1=0.00
--建表語句
Create table If Not Exists Activity (player_id int, device_id int, event_date date, games_played int)
Truncate table Activity
insert into Activity (player_id, device_id, event_date, games_played) values ('1', '2', '2016-03-01', '5')
insert into Activity (player_id, device_id, event_date, games_played) values ('1', '2', '2016-03-02', '6')
insert into Activity (player_id, device_id, event_date, games_played) values ('2', '3', '2017-06-25', '1')
insert into Activity (player_id, device_id, event_date, games_played) values ('3', '1', '2016-03-01', '0')
insert into Activity (player_id, device_id, event_date, games_played) values ('3', '4', '2018-07-03', '5')
--答案1 視窗函式
select
install_dt,
count(distinct player_id) installs,
round(sum(if(datediff(event_date,install_dt)=1,1,0))/count(distinct player_id),2) Day1_retention
from
(
select
*,
min(event_date) over(partition by player_id) install_dt
from
Activity
)
t1
group by
install_dt
相關文章
- SQL練習題SQL
- SQL練習00015SQL
- sql查詢入門練習題SQL
- 牛客SQL練習第21題SQL
- Day5-SQL綜合練習(Datawhale)SQL
- [MySQL光速入門]008 SQL強化練習MySql
- [MySQL光速入門]009 SQL強化練習答案MySql
- 簡單練習Microsoft SQL Server MERGE同步兩個表ROSSQLServer
- markdown 使用練習練習
- SQL經典練習題48道之一(1-10)SQL
- SQL經典練習題48道之二(11-19)SQL
- SQL經典練習題48道之三(20-25)SQL
- SQL經典練習題48道之四(26-30)SQL
- SQL經典練習題48道之五(31-35)SQL
- SQL經典練習題48道之六(36-40)SQL
- SQL經典練習題48道之七(41-48)SQL
- 【躍遷之路】SQL語句刻意練習(最後更新:2018.06.25)SQL
- Hive SQL必刷練習題:同時線上人數問題(*****)HiveSQL
- 新手練習:Python練習題目Python
- MYSQL練習1: DQL查詢練習MySql
- 招聘要求裡的「熟練使用 SQL」 你熟練麼?SQL
- [資料庫]50道經典SQL練習題,使用MySQL5.7解答資料庫MySql
- MySQL基礎練習20題,看看你的sql基礎man不manMySql
- python練習Python
- MySQL練習MySql
- ddl練習
- latex練習
- MySQ練習
- openGauss練習
- U7-11課綜合練習+12課階段測評練習——複習練習題目
- SQL學習SQL
- SQL 學習SQL
- SQL複習SQL
- python 練習0000Python
- C++練習C++
- shell練習題
- 【練習】canvas——flappyBirdCanvasAPP
- Python 練習題Python