国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

宣城市網(wǎng)站集約化建設茶葉網(wǎng)絡推廣方案

宣城市網(wǎng)站集約化建設,茶葉網(wǎng)絡推廣方案,常州建站網(wǎng)站模板,上海有什么企業(yè)一般在直播或者游戲中經(jīng)常會統(tǒng)計用戶在線人數(shù),主要分為求每個時刻的在線人數(shù)和求某個時刻的在線人數(shù)兩種。 【場景】:某個時刻的在線人數(shù)、每個時刻的在線人數(shù) 【知識點】:窗口函數(shù)、時間函數(shù)、sum(tag) over (order by dt,tag desc rows b…

一般在直播或者游戲中經(jīng)常會統(tǒng)計用戶在線人數(shù),主要分為求每個時刻的在線人數(shù)和求某個時刻的在線人數(shù)兩種。

【場景】:某個時刻的在線人數(shù)每個時刻的在線人數(shù)

【知識點】:窗口函數(shù)、時間函數(shù)、sum(tag) over (order by dt,tag desc rows between unbounded preceding and current row)、窗口函數(shù)與分組函數(shù)的區(qū)別

一、分析思路

1、在線人數(shù)如何定義?

在線人數(shù)是指在某個時間段內(nèi),某一時刻在線的用戶數(shù)。

可以求每個時刻的在線人數(shù),也可以求某個時刻的在線人數(shù)。常用的是求每個時刻的同時在線人數(shù),所以我們以其為例進行講解

2、求解思路

要計算每個時刻的同時在線人數(shù),我們可以按照以下步驟進行:

  1. 將所有登錄和退出記錄按照時間排序,得到一個按照時間遞增的登錄和退出記錄。如果該記錄表示用戶登錄,將其標記為1,如果表示用戶退出標記為-1
  2. 利用窗口函數(shù)按照上述順序?qū)擞浟羞M行累計求和:登錄時人數(shù)+1,退出時人數(shù)-1。

3、MySQL執(zhí)行步驟如下:

(1)獲取標記好登錄和退出的記錄表

#將所有用戶的進入和離開記錄合并一起,統(tǒng)一為dt,并用tag為1和-1來標記進入還是離開
(selecta.登錄日期 as dt,1 as tag
from 表名1 a)
union
(selecta.退出日期 as dt,-1 as tag
from 表名1 a)

這樣就得到標記好登錄和退出的記錄。

(2)對標記記錄累計求和

#如果同一時刻有進入也有離開時,先記錄用戶數(shù)增加再記錄減少,所以在窗口函數(shù)中使用sum()需要order by dt,tag desc
selectdt,sum(tag) over (order by dt,tag desc rows between unbounded preceding and current row) as 同時在線人數(shù)
from 標記好登錄和退出的記錄表

二、實例

下面就以兩個實例講清楚某個時刻的在線人數(shù)和每個時刻的在線人數(shù)。


兩種問題的區(qū)別:

問題描述特點使用方法
每個時刻的用戶在線人數(shù)求用戶狀態(tài)變動時刻的用戶在線人數(shù)先獲取標記好登錄和退出的記錄,然后按照時間和標記排序的順序?qū)擞浟?strong>累計求和
某個時刻的用戶在線人數(shù)限制條件(截止到某個時刻)的在線人數(shù)先獲取標記好登錄和退出的記錄,然后對某個時刻前的標記列求和

(1)每個時刻的在線人數(shù)

案例來自:SQL163 每篇文章同一時刻最大在看人數(shù)
問題:統(tǒng)計每篇文章同一時刻最大在看人數(shù),如果同一時刻有進入也有離開時,先記錄用戶數(shù)增加再記錄減少,結果按最大人數(shù)降序。
示例:用戶行為日志表tb_user_log(uid:用戶ID, artical_id:文章ID, in_time:進入時間, out_time:離開時間, sign_in:是否簽到)

iduidartical_idin_timeout_timesign_cin
110190012021-11-01 10:00:002021-11-01 10:00:110
210290012021-11-01 10:00:092021-11-01 10:00:380
310390012021-11-01 10:00:282021-11-01 10:00:580
410490022021-11-01 11:00:452021-11-01 11:01:110
510590012021-11-01 10:00:512021-11-01 10:00:590
610690022021-11-01 11:00:552021-11-01 11:01:240
710790012021-11-01 10:00:012021-11-01 10:01:500

根據(jù)示例,你的查詢應返回以下結果:

artical_idmax_uv
90013
90022

解釋:10點0分10秒時,有3個用戶正在瀏覽文章9001;11點01分0秒時,有2個用戶正在瀏覽文章9002。

求解代碼:

withmain as(#用tag標記增加還是減少(selectartical_id,uid,in_time as dt,1 as tagfrom tb_user_logwhere artical_id != 0)union(selectartical_id,uid,out_time as dt,-1 as tagfrom tb_user_logwhere artical_id != 0)),main1 as(#如果同一時刻有進入也有離開時,先記錄用戶數(shù)增加再記錄減少,所以在窗口函數(shù)中使用sum()需要order by dt,tag descselectartical_id,sum(tag) over (partition by artical_id order by dt,tag desc rows between unbounded preceding and current row) as uvfrom main)
#統(tǒng)計每篇文章同一時刻最大在看人數(shù),結果按最大人數(shù)降序 
selectartical_id,max(uv) as max_uv
from main1
group by artical_id
order by max_uv desc
  • 標記好登錄和退出的記錄
	artical_id	uid		 					dt								tag
1		9001      101      2021-11-01 10:00:00      1	
2		9001      102      2021-11-01 10:00:09      1	
3		9001      103      2021-11-01 10:00:28      1		
4		9002      104      2021-11-01 11:00:45      1		
5		9001      105      2021-11-01 10:00:51      1		
6		9002      106      2021-11-01 11:00:55      1		
7		9001      107      2021-11-01 10:00:01      1		
8		9001      101      2021-11-01 10:00:11      -1		
9		9001      102      2021-11-01 10:00:38      -1		
10	9001      103      2021-11-01 10:00:58      -1		
11	9002      104      2021-11-01 11:01:11      -1		
12	9001      105      2021-11-01 10:00:59      -1		
13	9002      106      2021-11-01 11:01:24      -1		
14	9001      107      2021-11-01 10:01:50      -1
  • 對標記記錄累計求和
		artical_id			 dt								tag
1		9001      2021-11-01 10:00:00      1	
2		9001      2021-11-01 10:00:01      2	
3		9001      2021-11-01 10:00:09      3		
4		9001      2021-11-01 10:00:11      2		
5		9001      2021-11-01 10:00:28      3		
6		9001      2021-11-01 10:00:38      2		
7		9001      2021-11-01 10:00:51      3		
8		9001      2021-11-01 10:00:58      2		
9		9001      2021-11-01 10:00:59      1		
10	9001      2021-11-01 10:01:50      0		
11	9002      2021-11-01 11:00:45      1		
12	9002      2021-11-01 11:00:55      2		
13	9002      2021-11-01 11:01:11      1		
14	9002      2021-11-01 11:01:24      0
  • 統(tǒng)計每篇文章同一時刻最大在看人數(shù)
artical_id	max_uv
1	9001				3
2	9002				2

(2)某個時刻的在線人數(shù)

案例來自:SQL186 ??椭辈ラ_始時各直播間在線人數(shù)
問題:請你統(tǒng)計直播開始時(19:00),各科目的在線人數(shù),以上例子的輸出結果為(按照course_name升序排序):

已知上課情況表attend_tb如下(其中user_id:用戶編號、course_name:課程名稱,course_datetime:上課時間、in_datetime:進入直播間的時間、out_datetime:離開直播間的時間):

user_idcourse_namecourse_datetimein_datetimeout_datetime
100Python2021-12-1 19:00-21:002021-12-01 19:00:002021-12-01 19:28:00
100Python2021-12-1 19:00-21:002021-12-01 19:30:002021-12-01 19:53:00
101Python2021-12-1 19:00-21:002021-12-01 19:00:002021-12-01 20:55:00
102Python2021-12-1 19:00-21:002021-12-01 19:00:002021-12-01 19:05:00
104Python2021-12-1 19:00-21:002021-12-01 19:00:002021-12-01 20:59:00
101SQL2021-12-2 19:00-21:002021-12-02 19:05:002021-12-02 20:58:00
102SQL2021-12-2 19:00-21:002021-12-02 18:55:002021-12-02 21:00:00
104SQL2021-12-2 19:00-21:002021-12-02 18:57:002021-12-02 20:56:00
107SQL2021-12-2 19:00-21:002021-12-02 19:10:002021-12-02 19:18:00
100R2021-12-3 19:00-21:002021-12-03 19:01:002021-12-03 21:00:00
102R2021-12-3 19:00-21:002021-12-03 18:58:002021-12-03 19:05:00
108R2021-12-3 19:00-21:002021-12-03 19:01:002021-12-03 19:56:00

示例數(shù)據(jù)的輸出結果如下

course_nameonline_num
Python4
R1
SQL2

求解代碼:

withmain as(#進入為增加人數(shù),出去為減少人數(shù)selectuser_id,course_name,date_format(in_datetime,'%H:%i') as dt,1 as tagfrom attend_tbunionselectuser_id,course_name,date_format(out_datetime,'%H:%i') as dt,-1 as tagfrom attend_tb)
#統(tǒng)計直播開始時(19:00),各科目的在線人數(shù)
selectcourse_name,sum(tag) as online_num
from course_tb
left join main using(course_name)
where dt <= '19:00'
group by course_name
order by course_name;
  • 標記好登錄和退出的記錄
device_id 	course_name    dt					tag
100         Python        19:00        1          
100         Python        19:30        1          
101         Python        19:00        1          
102         Python        19:00        1          
104         Python        19:00        1          
101         SQL           19:05        1          
102         SQL           18:55        1          
104         SQL           18:57        1          
107         SQL           19:10        1          
100         R             19:01        1          
102         R             18:58        1          
108         R             19:01        1          
100         Python        19:28        -1         
100         Python        19:53        -1         
101         Python        20:55        -1         
102         Python        19:05        -1         
104         Python        20:59        -1         
101         SQL           20:58        -1         
102         SQL           21:00        -1         
104         SQL           20:56        -1         
107         SQL           19:18        -1         
100         R             21:00        -1         
102         R             19:05        -1         
108         R             19:56        -1         
  • 對截止時間點的標記記錄求和
course_name    dt					online_num
Python        19:00        4                                              
R             18:58        1               
SQL           18:55        2             

擴展:

前往查看:MySQL 窗口函數(shù)與分組函數(shù)的區(qū)別

http://aloenet.com.cn/news/28134.html

相關文章:

  • 長沙做企業(yè)網(wǎng)站的公司中國網(wǎng)站排名
  • 網(wǎng)站制作難點故事式的軟文廣告例子
  • 青島網(wǎng)站建設青島新思維百度用戶服務中心人工電話
  • 浙江省建設通網(wǎng)站迅雷磁力
  • 網(wǎng)站建設找星火龍關鍵詞排名代做
  • PC端網(wǎng)站開發(fā)以及設計費用qq群推廣網(wǎng)站
  • 網(wǎng)站建設公司排行榜搜索引擎優(yōu)化內(nèi)容包括哪些方面
  • 貞豐縣住房和城鄉(xiāng)建設局網(wǎng)站鄭州關鍵詞排名顧問
  • 成都設計公司官網(wǎng)東莞seo網(wǎng)絡營銷
  • 泉州建設工程質(zhì)量網(wǎng)站千鋒教育學費一覽表
  • 創(chuàng)建了網(wǎng)站百度推廣開戶費用
  • 小白學做網(wǎng)站買什么書優(yōu)化網(wǎng)站排名工具
  • wordpress查看網(wǎng)站內(nèi)容站長工具服務器查詢
  • wordpress 操作數(shù)據(jù)庫大連seo顧問
  • 唐山企業(yè)網(wǎng)站建設濟南百度
  • 云主機 做網(wǎng)站鏈接交換公司
  • 上海網(wǎng)站搜索排名婚戀網(wǎng)站排名前三
  • 做外貿(mào)網(wǎng)站好的公司志鴻優(yōu)化設計答案網(wǎng)
  • 網(wǎng)站產(chǎn)品詳情用哪個軟件做的sem競價培訓班
  • 德國 網(wǎng)站建設百度指數(shù)查詢?nèi)肟?/a>
  • 網(wǎng)站做百度推廣需要什么材料百度號碼認證平臺官網(wǎng)
  • 域名過期了怎么辦怎么找回網(wǎng)站企業(yè)門戶網(wǎng)站的設計與實現(xiàn)
  • 建網(wǎng)站方案自媒體推廣渠道
  • 微信微網(wǎng)站平臺百度優(yōu)化怎么做
  • 做網(wǎng)站需要什么樣的電腦配置太原網(wǎng)站優(yōu)化公司
  • 織夢仿非織夢網(wǎng)站資源搜索引擎搜索神器網(wǎng)
  • 彩票真人網(wǎng)站建設有什么功能
  • 找別人做網(wǎng)站的注意事項電商網(wǎng)站設計
  • 做網(wǎng)站底色怎么選微信公眾號運營
  • 深圳網(wǎng)站設計公司哪家便宜廣西seo關鍵詞怎么優(yōu)化