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
- pl/sql練習SQL
- pl/sql 練習SQL
- SQL 練習題SQL
- SQL練習題SQL
- oracle sql練習題OracleSQL
- SQL練習00015SQL
- sql 語句練習 In MySQLMySql
- sql 語句練習(2)SQL
- SQL Server遊標使用練習SQLServer
- sql 語句練習(3) In MySQLMySql
- sql查詢入門練習題SQL
- Day5-SQL綜合練習(Datawhale)SQL
- 牛客SQL練習第21題SQL
- Oracle SQL select練習語句OracleSQL
- SQL*Loader 筆記 (一) 熱身練習SQL筆記
- SQL學習和練習的好地方(http://sqlzoo.cn)SQLHTTP
- [MySQL光速入門]008 SQL強化練習MySql
- 【sql】訓練五SQL
- 【sql】訓練四SQL
- 【sql】訓練三SQL
- 【sql】訓練二SQL
- 【sql】訓練一SQL
- [MySQL光速入門]009 SQL強化練習答案MySql
- 笨辦法學 Python · 續 練習 39:SQL 建立PythonSQL
- 新手練習:Python練習題目Python
- MYSQL練習1: DQL查詢練習MySql
- 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線上練習網站(http://sqlzoo.cn)答案解析(3)SQL網站HTTP
- sql線上練習網站(http://sqlzoo.cn)答案解析(1)SQL網站HTTP
- sql線上練習網站(http://sqlzoo.cn)答案解析(2)SQL網站HTTP
- 簡單練習Microsoft SQL Server MERGE同步兩個表ROSSQLServer