日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

如何利用SQL求取微信的共同好友数?

發(fā)布時(shí)間:2023/12/19 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何利用SQL求取微信的共同好友数? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

「哎呀,我們竟然有共同好友」

「哎呀,沒(méi)想到你們也認(rèn)識(shí)」

經(jīng)常在朋友圈評(píng)論區(qū)能夠看到類(lèi)似的評(píng)論,這些評(píng)論反映的其實(shí)就是共同好友這個(gè)概念。那如果你是負(fù)責(zé)微信的數(shù)據(jù)分析師,現(xiàn)在業(yè)務(wù)方想看下微信中任意兩個(gè)人之間有多少個(gè)共同好友,應(yīng)該怎么看呢?

我們先創(chuàng)建一個(gè)模擬數(shù)據(jù)表,創(chuàng)建代碼如下:

create?table?weixin_friends? (uid?bigint, tuid?bigint);insert?into?weixin_friends?(uid,tuid)? values? (100,200), (100,300), (100,400), (200,100), (200,300), (200,400), (300,100), (300,200), (400,100)

通過(guò)上述代碼就創(chuàng)建了好友關(guān)系表weixin_friends,該表的詳細(xì)(模擬)數(shù)據(jù)如下:

uidtuid
100200
100300
100400
200100
200300
200400
300100
300200
400100

uid表示每個(gè)用戶(hù)在微信后臺(tái)的用戶(hù)id,tuid表示uid對(duì)應(yīng)的微信好友id,現(xiàn)在我們要通過(guò)這張表查詢(xún)出任意兩個(gè)人之間的共同好友數(shù),應(yīng)該怎么做呢?

想一下,如果現(xiàn)在需要我們?nèi)斯ふ页錾媳碇腥我鈨蓚€(gè)人的共同好友的話,你會(huì)怎么做呢?

我會(huì)先從tuid著手,看下每一個(gè)tuid是哪些人的共同好友,也就是tuid鏈接了哪些人?

tuid好友1好友2
200100300
300100200
400100200
100200300
100200400
100300400

如果我們能整理出上表這樣的話,任意兩個(gè)人的共同好友數(shù)就一目了然了,只需要按照好友1、好友2同時(shí)group by,然后count(tuid)就可以得到任意兩個(gè)用戶(hù)的共同好友數(shù)了。

那我們?cè)趺礃硬趴梢缘玫缴厦孢@張的表呢?那就是把表weixin_friends通過(guò)tuid進(jìn)行自連接,實(shí)現(xiàn)代碼如下:

select?t1.uid?t1_uid,t1.tuid?t1_tuid,t2.uid?t2_uid,t2.tuid?t2_tuid from?(select?uid,tuid?from?weixin_friends)?t1? join?(select?uid,tuid?from?weixin_friends)?t2? on?t1.tuid?=?t2.tuid

運(yùn)行上面代碼會(huì)得到如下結(jié)果:


上面結(jié)果存在兩個(gè)問(wèn)題,一個(gè)是自己和自己是共同好友(紅框圈出來(lái)的部分),即t1_uid = t2_uid,另外一個(gè)就是AB和BA是兩條記錄(綠框圈出來(lái)的部分),實(shí)際上背后是相同的兩個(gè)人。為了解決這兩個(gè)問(wèn)題,我們就需要對(duì)t1_uid和t2_tuid進(jìn)行限制,代碼如下:

select?t1.uid?t1_uid,t1.tuid?t1_tuid,t2.uid?t2_uid,t2.tuid?t2_tuid from?(select?uid,tuid?from?weixin_friends)?t1? join?(select?uid,tuid?from?weixin_friends)?t2? on?t1.tuid?=?t2.tuid?and?t1.uid?<?t2.uid

運(yùn)行上面代碼會(huì)得到如下結(jié)果:


然后再針對(duì)這個(gè)表中的t1_uid、t2_uid同時(shí)進(jìn)行g(shù)roup by即可,實(shí)現(xiàn)代碼如下:

select?t1_uid,t2_uid,count(t1_tuid)?cnt from?(select?t1.uid?t1_uid,t1.tuid?t1_tuid,t2.uid?t2_uid,t2.tuid?t2_tuidfrom?(select?uid,tuid?from?weixin_friends)?t1?join?(select?uid,tuid?from?weixin_friends)?t2?on?t1.tuid?=?t2.tuid?and?t1.uid?<?t2.uid)t? group?by?t1_uid,t2_uid

運(yùn)行上面代碼會(huì)得到如下結(jié)果:


這就是我們想要的任意兩個(gè)用戶(hù)之間的共同好友數(shù)了。

對(duì)比Excel系列圖書(shū)累積銷(xiāo)量達(dá)15w冊(cè),讓你輕松掌握數(shù)據(jù)分析技能,感興趣的同學(xué)可以點(diǎn)擊下方鏈接了解:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的如何利用SQL求取微信的共同好友数?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。