精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

高頻HIVE-SQL筆試題詳解

運維 數據庫運維
在上期的SQL題目中,我們以求連續活躍為例,講述了lead 、lag錯位相減的用法。但若不采用錯位相減的話,其實也可以實現這一目的。本次我們就先講述一下最大連續活躍天數的第二種解法,然后再講述另一常見面試SQL題目。

[[396437]]

本文轉載自微信公眾號「數師兄」,作者數師兄。轉載本文請聯系數師兄公眾號。

在上期的SQL題目中,我們以求連續活躍為例,講述了lead 、lag錯位相減的用法。但若不采用錯位相減的話,其實也可以實現這一目的。本次我們就先講述一下最大連續活躍天數的第二種解法,然后再講述另一常見面試SQL題目。

這一方法就是利用row_number給每一行生成一個連續的序號,這樣,在連續活躍的時間段,就有了一個對照值,利用日期和行號這兩者就可以得到一個差值,在連續活躍的時段內,其差值是相同的,那么我們按照這個差值進行分組就可以進一步計算本次連續活躍有多少天了。

SQL如下

  1. WITH active AS 
  2.   (SELECT 100 UID, 
  3.               '2021-04-01'dt 
  4.    UNION ALL SELECT 101 UID, 
  5.                         '2021-04-01'dt 
  6.    UNION ALL SELECT 102 UID, 
  7.                         '2021-04-01'dt 
  8.    UNION ALL SELECT 103 UID, 
  9.                         '2021-04-01'dt 
  10.    UNION ALL SELECT 100 UID, 
  11.                         '2021-04-02'dt 
  12.    UNION ALL SELECT 101 UID, 
  13.                         '2021-04-02'dt 
  14.    UNION ALL SELECT 102 UID, 
  15.                         '2021-04-02'dt 
  16.    UNION ALL SELECT 103 UID, 
  17.                         '2021-04-02'dt 
  18.    UNION ALL SELECT 104 UID, 
  19.                         '2021-04-02'dt 
  20.    UNION ALL SELECT 100 UID, 
  21.                         '2021-04-03'dt 
  22.    UNION ALL SELECT 104 UID, 
  23.                         '2021-04-03'dt 
  24.    UNION ALL SELECT 101 UID, 
  25.                         '2021-04-04'dt 
  26.    UNION ALL SELECT 102 UID, 
  27.                         '2021-04-04'dt 
  28.    UNION ALL SELECT 103 UID, 
  29.                         '2021-04-04'dt 
  30.    UNION ALL SELECT 104 UID, 
  31.                         '2021-04-04'dt 
  32.    UNION ALL SELECT 105 UID, 
  33.                         '2021-04-04'dt 
  34.    UNION ALL SELECT 102 UID, 
  35.                         '2021-04-03'dt) 
  36. SELECT UID, 
  37.        max(days)days 
  38. FROM 
  39.   (SELECT date_sub(dt,rn), 
  40.           UID, 
  41.           count(DISTINCT dt)days 
  42.    FROM 
  43.      (SELECT UID, 
  44.              dt, 
  45.              row_number()over(PARTITION BY UID 
  46.                               ORDER BY dt)rn 
  47.       FROM active)x 
  48.    GROUP BY date_sub(dt,rn), 
  49.             UID)y 
  50. GROUP BY UID 

結果如下:

至此,連續活躍的問題就告一段落了。下面我們來看另一個常見問題:

2.行列轉換

(1)某直播產品,直播記錄表lives中有liveid(直播id)、invite_list(邀約名單,string,用戶id以“,”分割)字段,直播觀看記錄表record中有uid(用戶id)、liveid(直播id)、duration(觀看時長),試求出邀約名單中所有用戶的觀看時長

由于存在邀約用戶未進房觀看的問題,所以我們直接從觀看記錄中來取,不一定能將名單中所有用戶包含進去,所以,我們需要以直播記錄中的邀約名單為準。這就需要利用explode和lateral view來將這個string類型轉換為行記錄的形式。

仍然是使用with構造lives和record兩個簡單的臨時表,詳細SQL如下:

  1. with lives as
  2. select 100 liveid,'A01,A02,A03,A04'invite_list union all 
  3. select 101 liveid,'A05,A06,A07,A08'invite_list  
  4. ), 
  5. record as
  6. select 100 liveid,'A01' uid,30 duration union all 
  7. select 100 liveid,'A02' uid,50 duration union all 
  8. select 100 liveid,'A03' uid,15 duration union all 
  9. select 101 liveid,'A07' uid,20 duration union all 
  10. select 101 liveid,'A08' uid,60 duration 
  11.  
  12. select 
  13. list.liveid,list.ulist,if(record.duration is null,0,record.duration)duration 
  14. from ( 
  15. select liveid,ulist 
  16. from lives  
  17. lateral view explode(split(invite_list,',')) uid as ulist 
  18. )list left join record on list.liveid=record.liveid and list.ulist=record.uid 

這里簡單說明下:lateral view 是為原表調用explode函數,將一個array或者map的字段分解成多行并作為一個臨時表,然后再與其他字段組合到一起。

(2)某APP用戶訪問頁面記錄record,含有字段uid(用戶id)、pageid(頁面id),將每個用戶的訪問路徑輸出在一個字段中

前一道題目是列轉行,這道題是行專列。利用collect_set可以將分組下面某個字段的所有記錄聚合成一個列表,然后可以進一步使用concat_ws函數把array轉為字符串,并用“>”將其連接起來。

  1. WITH record as 
  2.   (SELECT 100 UID,'A01' pageid 
  3.    UNION ALL SELECT 100 UID,'A02' pageid 
  4.    UNION ALL SELECT 100 UID,'A03' pageid 
  5.    UNION ALL SELECT 101 UID,'A07' pageid 
  6.    UNION ALL SELECT 101 UID,'A08' pageid) 
  7.     
  8.     
  9. SELECT UID, 
  10.        concat_ws('>',collect_list(pageid))page 
  11. FROM record 
  12. GROUP BY UID 

3.求留存

對于多數互聯網公司來說,任何時候留存率都是重中之重。所以在數據分析的面試當中,求留存率的SQL題目出現的頻率也是極高。

所謂“留存率”,通常是定義一個初始行為與一個后繼行為,符合初始條件的用戶量在經過N天之后,剩余的比例就是留存率。發散來講,回訪、復看等概念也與留存相類似。如:

某APP新注冊用戶表user,含有字段uid(用戶id)、dt(注冊日期),活躍表active,有字段uid(用戶id),dt(活躍日期),求每天新增用戶的次日留存率、次2日留存率、次3日留存率……次7日留存率

此題目就是以新注冊作為初始行為,活躍作為后繼行為。顯而易見地,我們可以將初始行為與后繼行為做左連接,然后按注冊日期進行聚合,求相應的新增用戶和次N日留存人數。

  1. WITH user as 
  2.   (SELECT 100 UID,'2021-01-01' dt 
  3.    UNION ALL SELECT 101 UID,'2021-01-01' dt 
  4.    UNION ALL SELECT 102 UID,'2021-01-01' dt 
  5.    UNION ALL SELECT 103 UID,'2021-01-02' dt 
  6.    UNION ALL SELECT 104 UID,'2021-01-02' dt 
  7.    UNION ALL SELECT 105 UID,'2021-01-02' dt 
  8.    UNION ALL SELECT 106 UID,'2021-01-02' dt), 
  9.    active as
  10.    select 100 UID,'2021-01-01'dt union all 
  11.    select 100 UID,'2021-01-02'dt union all 
  12.    select 100 UID,'2021-01-03'dt union all 
  13.    select 100 UID,'2021-01-05'dt union all 
  14.    select 100 UID,'2021-01-07'dt union all 
  15.    select 101 UID,'2021-01-01'dt union all 
  16.    select 101 UID,'2021-01-07'dt union all 
  17.    select 102 UID,'2021-01-01'dt union all 
  18.    select 103 UID,'2021-01-01'dt union all 
  19.    select 103 UID,'2021-01-02'dt union all 
  20.    select 103 UID,'2021-01-03'dt union all 
  21.    select 103 UID,'2021-01-05'dt union all 
  22.    select 104 UID,'2021-01-02'dt union all 
  23.    select 104 UID,'2021-01-03'dt union all 
  24.    select 104 UID,'2021-01-04'dt union all 
  25.    select 105 UID,'2021-01-02'dt union all 
  26.    select 105 UID,'2021-01-03'dt union all 
  27.    select 105 UID,'2021-01-04'dt union all 
  28.    select 105 UID,'2021-01-05'dt union all 
  29.    select 105 UID,'2021-01-07'dt union all 
  30.    select 106 UID,'2021-01-02'dt union all 
  31.    select 106 UID,'2021-01-04'dt  
  32.    ) 
  33.  
  34. select 
  35. user.dt, 
  36. count(distinct user.uid)new_user, 
  37. count(distinct if(datediff(active.dt,user.dt)=1,active.uid,null))retain1, 
  38. count(distinct if(datediff(active.dt,user.dt)=2,active.uid,null))retain2, 
  39. count(distinct if(datediff(active.dt,user.dt)=3,active.uid,null))retain3, 
  40. count(distinct if(datediff(active.dt,user.dt)=4,active.uid,null))retain4, 
  41. count(distinct if(datediff(active.dt,user.dt)=5,active.uid,null))retain5, 
  42. count(distinct if(datediff(active.dt,user.dt)=6,active.uid,null))retain6, 
  43. count(distinct if(datediff(active.dt,user.dt)=7,active.uid,null))retain7 
  44. from user left join active on user.uid=active.uid 
  45. group by user.dt 

其結果如下:

 

這種方法可能比較麻煩一些,得把要求的每一個留存指標都要單獨寫一個字段。若想省事兒,可以單獨求出每日的新增數量,再將新增表與活躍表連接而求出每個注冊日期在后續每天的活躍數量,然后將新增數量與活躍數量再進行關聯,從而求得任意周期的留存。

 

責任編輯:武曉燕 來源: 數師兄
相關推薦

2021-04-21 08:11:09

HIVE-SQLSQL數據庫

2009-08-01 22:47:13

ASP.NET筆試題目ASP.NET

2021-12-08 11:18:21

Spring Bean面試題生命周期

2021-02-23 12:43:39

Redis面試題緩存

2015-04-07 14:05:13

前端阿里在線筆試題

2009-06-15 17:18:25

Java筆試題

2010-08-11 12:07:08

騰訊筆試題騰訊筆試題

2010-08-11 11:32:57

谷歌筆試題谷歌筆試題

2009-07-28 13:35:18

2010-08-11 11:22:00

IBM筆試題IBM筆試

2010-08-11 11:57:02

微軟筆試題微軟筆試題

2020-06-01 08:39:12

JavaScript開發技術

2010-08-18 10:17:00

2010-08-16 15:27:22

雅虎筆試題

2021-01-22 11:58:30

MySQL數據庫開發

2010-08-18 10:27:56

2011-08-11 17:39:25

Objective-C筆試題

2009-07-14 10:05:02

HCDA認證考試筆試題

2010-08-31 23:15:42

IT筆試題企業

2020-07-14 16:08:33

數據分析Python筆試
點贊
收藏

51CTO技術棧公眾號

国产高清免费观看| 日韩免费高清在线| 刘玥91精选国产在线观看| 在线精品观看| 亚洲开心激情网| 伊人影院综合在线| 国产美女情趣调教h一区二区| 91蜜桃在线观看| 国产免费一区二区三区在线能观看 | 美女视频黄免费| 日韩高清成人在线| 韩日av一区二区| 久久久久9999亚洲精品| 国产精品成人在线| 日本福利片在线观看| 久久影视三级福利片| 一区二区三区四区精品视频| 亚洲精品视频在线观看免费 | 日韩精品第二页| 亚洲永久免费av| 亚洲精品一卡二卡三卡四卡| 狠狠躁日日躁夜夜躁av| 日本少妇一区二区| 欧美激情三级免费| 国产馆在线观看| 色橹橹欧美在线观看视频高清| 56国语精品自产拍在线观看| 男人揉女人奶房视频60分| 麻豆网站在线观看| 久久久久九九视频| 国产欧美一区二区三区另类精品| 亚洲一级片免费看| 欧美在线综合| 91国语精品自产拍在线观看性色| 性生交大片免费全黄| 久久av免费看| 日韩av在线免费观看一区| 亚洲热在线视频| 只有精品亚洲| 欧美日韩一区国产| 北条麻妃av高潮尖叫在线观看| 黄色在线观看视频网站| 中文字幕一区二区不卡| 日本一区二区在线| 日本在线一二三| www.日韩精品| 国产高清精品一区二区| 999精品国产| 美女任你摸久久| 国产精品一区二区性色av| 久久夜色精品国产噜噜亚洲av| 在线不卡欧美| 国内精品伊人久久| 久久精品美女视频| 亚洲国产三级| 91av视频在线| www.国产com| 亚洲欧美成人| 国产成人在线亚洲欧美| 在线免费观看国产精品| 日韩精品久久理论片| 国产精品大片wwwwww| 天天干天天操天天操| 日韩成人免费电影| 国产精品一区二区久久久久| 亚洲性生活大片| 国产一区二区三区四区五区美女 | 福利电影一区| 亚洲激情小视频| 国产传媒第一页| 国产成人短视频在线观看| 亚洲欧洲在线播放| 在线国产视频一区| 欧美丝袜激情| 亚洲高清免费观看高清完整版| 丰满饥渴老女人hd| 中文字幕日韩在线| 亚洲国内高清视频| 人妻 日韩 欧美 综合 制服| 给我免费播放日韩视频| 精品免费国产二区三区| yjizz视频| 日韩有码av| 伊人亚洲福利一区二区三区| 免费看裸体网站| 91亚洲国产| 欧美成人精品一区| 欧美精品久久久久性色| 精品福利电影| 国产99久久精品一区二区永久免费| 日韩不卡在线播放| 麻豆91在线播放| 91亚洲国产成人久久精品网站| 99久久99久久久精品棕色圆| 国产乱一区二区| 成人黄色片视频网站| www精品国产| 久久综合av免费| 亚洲国产精品久久久久婷婷老年| 精品视频在线一区二区| 亚洲一区二区五区| 欧美一级黄色片视频| 91精品店在线| 欧美大片顶级少妇| 国产精品jizz| 久久精品国内一区二区三区水蜜桃| www日韩欧美| 欧美黑人性猛交xxx| 99国产精品久久久久久久成人热| 国产精品成人aaaaa网站| 91丨九色丨丰满| 99久久精品99国产精品| 亚洲国内在线| 高清精品在线| 欧美日韩精品一二三区| 91九色蝌蚪porny| 亚洲欧洲免费| 亚洲18私人小影院| 夜夜爽8888| 99久久er热在这里只有精品15 | 精品日本美女福利在线观看| 先锋影音久久久| 色妞欧美日韩在线| 国产精品xxxx喷水欧美| 日本大胆欧美人术艺术动态| 西西人体一区二区| 国产这里只有精品| 天堂av在线播放| 又紧又大又爽精品一区二区| 日韩精品无码一区二区三区免费| 久久久久久亚洲精品美女| 亚洲精品一区中文字幕乱码| 婷婷在线精品视频| 强制捆绑调教一区二区| 国产在线精品一区二区三区》| 1pondo在线播放免费| 精品国产成人av| 精品人妻一区二区免费| 天天做综合网| 国产精品久久久久久亚洲影视 | 久久久久久久久亚洲精品| 亚洲另类在线视频| 日本xxxx黄色| 偷拍亚洲色图| 97视频免费看| 蜜桃视频久久一区免费观看入口| 日韩一区中文字幕| 麻豆三级在线观看| 国产精品视频一区二区三区四蜜臂| 久热精品视频在线| 中文字幕一二三四| 欧美国产日韩一二三区| 黄色免费视频大全| 精品综合久久88少妇激情| 九九久久综合网站| 国产成人久久精品77777综合| 国产精品久久久久国产精品日日| www黄色在线| 久久99蜜桃| 国产欧美中文字幕| www日韩tube| 欧美在线你懂的| 加勒比综合在线| 久久一区二区三区超碰国产精品| 精品一卡二卡三卡四卡日本乱码| 黄色大片在线| 亚洲国产精品高清久久久| 欧美人妻一区二区| 成人精品在线视频观看| 国产一二三在线视频| 精品中国亚洲| 日本不卡视频在线播放| 你懂的视频在线观看| 色噜噜夜夜夜综合网| 日本性高潮视频| 免费xxxx性欧美18vr| 麻豆md0077饥渴少妇| 日韩精品一区二区三区中文字幕| 九色成人免费视频| 色wwwwww| 色综合一个色综合亚洲| 日韩女同一区二区三区| 久久成人久久鬼色| 久久久久久久久网| 爱高潮www亚洲精品| 久久国产精品久久久| 色呦呦中文字幕| 欧美性xxxx极品hd满灌| 国产成人精品无码免费看夜聊软件| 另类亚洲自拍| 制服诱惑一区| 国产伦精品一区二区三区免费优势| 亚洲18私人小影院| 国产福利电影在线| 欧美另类久久久品| 国产奶水涨喷在线播放| 久久人人97超碰com| av五月天在线| 亚洲精品97| 欧洲成人一区二区| 精品国产乱码一区二区三区| 久久久综合av| 岛国在线视频免费看| 欧美一区在线视频| 久久国产精品免费看| 国产精品久久久久久久久免费樱桃| 亚洲av毛片在线观看| 黑人一区二区| 日韩在线三级| 97超碰成人| 国产精品免费一区豆花| 国产黄a三级三级三级av在线看| 欧美r级在线观看| 国产午夜精品久久久久| 亚洲精品水蜜桃| 亚洲一区二区自偷自拍 | h片在线免费看| 色香色香欲天天天影视综合网| 永久免费看片直接| 91小视频在线| 特黄特黄一级片| 日韩中文字幕一区二区三区| 精品人妻人人做人人爽| 国内黄色精品| 成人欧美一区二区三区在线| 日韩av超清在线观看| 超碰日本道色综合久久综合| 黄网站在线观看| 亚洲第一福利网站| 91片黄在线观看喷潮| 色欲综合视频天天天| 国产亚洲第一页| 亚洲人成网站在线| 国产又大又粗又爽的毛片| av高清不卡在线| 国产精品91av| 精品一区二区免费| 粗暴91大变态调教| 亚洲茄子视频| 国产aaa免费视频| 一区二区三区午夜探花| 无遮挡亚洲一区| 免费久久久久久久久| 粉嫩av免费一区二区三区| 97精品资源在线观看| 日本亚洲欧洲色α| 欧美成人免费电影| 欧美一区二区色| 黄色视屏在线免费观看| 久久免费国产精品1| 羞羞电影在线观看www| 久久精品视频va| av免费在线免费| 久久手机精品视频| 成人在线播放免费观看| 色爱精品视频一区| 高清在线观看av| 亚洲区中文字幕| 人妻一区二区三区四区| 亚洲精品黄网在线观看| 天堂中文在线看| 日韩高清中文字幕| 五月婷婷开心中文字幕| 欧美精品一区二区三区久久久| 性做久久久久久久久久| 777奇米成人网| 国产欧美熟妇另类久久久 | 高潮无码精品色欲av午夜福利| 欧美日韩精品二区| 五月婷婷激情网| 欧美午夜精品久久久久久浪潮| 影音先锋亚洲天堂| 一本大道久久a久久综合婷婷 | 五月综合激情网| 日本少妇性生活| 在线观看区一区二| 在线免费看毛片| 91精品国产91久久久久久最新毛片| 国产精品无码白浆高潮| 欧美一级在线免费| 韩国av免费在线| 在线视频精品一| 久久亚洲天堂| 欧美精品久久久久久久免费观看| 黑人极品ⅴideos精品欧美棵| 国产69精品99久久久久久宅男| 色吧亚洲日本| 国产精品久久久999| 视频二区欧美| 蜜桃传媒视频麻豆一区| 成人aaaa| 麻豆视频传媒入口| 国产日韩欧美一区在线| 国产男女无遮挡| 国产制服丝袜一区| 男人的天堂影院| 欧美国产成人精品| 天天干中文字幕| 欧美午夜精品久久久久久浪潮 | 日韩精品一区二区三区视频播放 | 欧美日韩不卡视频| 99国产精品久久久久久久成人| 日韩激情视频在线| 天堂中文а√在线| 97视频免费看| 亚洲图片小说区| 精品久久久久久中文字幕动漫| 亚洲尤物av| 激情六月天婷婷| 三级成人在线视频| 国产调教打屁股xxxx网站| 久久久亚洲高清| 国产精品老熟女一区二区| 色一情一伦一子一伦一区| www.天堂av.com| 一本色道久久88综合亚洲精品ⅰ| 国产婷婷视频在线| 日韩av免费在线| 日韩黄色网络| 大片在线观看网站免费收看| 葵司免费一区二区三区四区五区| 亚洲精品在线视频播放| 91麻豆免费在线观看| 国产色无码精品视频国产| 欧美在线色视频| 亚洲欧洲精品视频| 欧美国产日韩一区二区在线观看 | 九热爱视频精品视频| 日韩久久久久久久久久久久| 日本aⅴ亚洲精品中文乱码| 日韩无码精品一区二区| 亚洲欧美视频在线观看| 一级一级黄色片| 亚洲黄色有码视频| av蜜臀在线| 99久久99久久| 国产精品黑丝在线播放| 免费男同深夜夜行网站| 国产成人精品亚洲777人妖| 国产精品丝袜一区二区| 欧美性猛交xxxxxxxx| 深夜福利在线观看直播| 欧美韩日一区二区| 日本99精品| 一区二区三区欧美成人| 蜜桃精品视频在线| 国产精品国产三级国产专业不| 精品毛片三在线观看| 国模私拍视频在线| 欧美激情伊人电影| 另类春色校园亚洲| 日韩伦理在线免费观看| 国产成人一级电影| 欧美日韩偷拍视频| 欧美一区二区三区视频免费播放| 国产在线二区| 成人在线小视频| 国产精品久久久乱弄| 日本高清久久久| 亚洲欧美视频一区| 人妻无码一区二区三区久久99 | 一区二区精品免费| 欧美调教femdomvk| 日本最新在线视频| 成人妇女免费播放久久久| 日韩专区精品| 97人人爽人人| 一区二区国产盗摄色噜噜| 国产成人精品亚洲精品色欲| 欧美成人自拍视频| 6080成人| 亚洲熟妇国产熟妇肥婆| 99久久久无码国产精品| 国产精品午夜影院| 亚洲人成免费电影| 精品福利在线| 综合视频免费看| 成人sese在线| 中文字幕免费在线观看视频| 国产亚洲精品久久久| 欧美黑粗硬大| 日本道在线视频| 久久久精品免费观看| 伊人亚洲综合网| 九色精品免费永久在线| 欧美aaaaaaaa牛牛影院| 日韩网站在线免费观看| 国产女人aaa级久久久级| 亚洲综合精品在线| 欧美精品久久久久| 精品久久久亚洲| 亚洲熟妇一区二区| 欧美日韩免费网站| 欧美r级在线| 精品在线视频一区二区| 久久国产日韩| 国产少妇在线观看| 日韩精品在线观看视频| 久久国产三级| 国产不卡一区二区视频|