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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【数据库】SQL极速入门(多种方式查询用户复借次数)

發布時間:2025/3/21 数据库 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据库】SQL极速入门(多种方式查询用户复借次数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??最近遇到這樣一個事:許多DBA的小伙伴不太明白金融業務中復借用戶的定義方式以及sql查詢方式,給他們提需求也整不明白,需求如下:

??根據訂單編號,查詢用戶該訂單所對應的復借次數(白話講就是:我有一筆訂單,想看看這筆訂單是用戶在本平臺的第幾筆訂單)

??既然他們整不明白,那就自己寫吧。

??下面簡單介紹下“復借”,再列舉幾種在mysql、oracle數據庫中統計用戶復借次數的方式。sql能力就是一點點提升的,希望能夠拋磚引玉,窺一斑而知全豹。


一、如何定義復借

??復借是指在一個貸款平臺借款訂單還清后繼續申請貸款的行為

??復借次數即為該用戶累計成功借還款的總次數

??在數據庫中,統計復借這個指標,用到的基本為還款表:即每個用戶(user_id)的每一筆訂單(apply_id)對應的還款情況(是否到期,是否成功還款)。

??基本思路:成功還款1次,復貸次數+1

??另外,考慮產品記期方式不同,我們分單期和多期兩種產品來討論

二、單期產品

方法1:Mysql之子查詢計數

??簡單的說,就是兩張相同的表做左外聯,統計user_id相同時,第一張表apply_id比第二張表apply_id大的數據

??內聯子查詢:生成兩張相同的表,然后做左外聯,這樣表2中與表1user_id相同的數據就都會被查詢得到,結果如下:

??再用where做一層判斷,把表1比表2apply_id大的數據篩選出來。效果如下:

??對應的sql大致如下:

select * from(SELECT * FROM repayment ) a left join (SELECT * FROM repayment ) b on a.user_id = b.user_id and a.apply_id > b.apply_id

??接下來分組統計apply_id計數,即可求得復借次數,下面為實操sql:

select a.user_id,a.apply_id,count(b.apply_id) loan_nfrom (SELECT r.user_id,r.apply_idFROM`repayment` r LEFT JOIN app_user u ON r.user_id = u.id WHERE `repay_status` = '已還' ) a left join (SELECT r.user_id,r.apply_idFROM`repayment` r LEFT JOIN app_user u ON r.user_id = u.id WHERE `repay_status` = '已還' ) b on a.user_id = b.user_id and a.apply_id > b.apply_id group by a.user_id,a.apply_id ORDER BY a.user_id,loan_n

??結果如下:

方法2:Oracle之分析函數

??Oracle較mysq而言,增加了許多高級函數,常用的分析函數如下:

??OVER(PARTITION BY… ORDER BY…)的使用說明和意義:

??顧名思義,PARTITION 中文是分割的意思,ORDER 是排序的意思,所以翻譯一下就是先把一組數據按照指定的字段進行分割成各種組,然后組內按照某個字段排序。

??那我們大致的思路,就是先按照user_id對用戶訂單進行分組,再按照apply_id的大小進行一個正序排序,就是這么簡單。

select user_id,apply_id,row_number() over(partition by user_id order by apply_id)-1 loan_n from repayment

??和mysql處理后的效果一樣

方法3:Mysql 自定義變量 實現高級分析函數的功能

??Mysql暫不支持lag()、lead()等統計函數,我們用自定義變量的方法來實現這個功能。

??大致思路為: 固定列A(user_id列),定義兩個自變量B(@user_id)、C(@rank),sql執行過程中動態比較A與B(注意細節,實際比的是A(n)與B(n-1)),如果一致,變量C(n)計數+1;如果不一致,變量C(n)重置為0。

??也就是,sql按行執行的過程中,累計統計user_id為相同值的數量(一般實現排序功能,都這么用)

??如下圖,第一行user_id為4,@user_id(自定義變量)為空,rank就為0;第二行user_id為4,@user_id已更新為4,兩數對比相同,rank就+1為1;第三行user_id為4,@user_id更新為4,兩數對比相同,rank就+1為2;第四行user_id為21,@user_id更新為4,兩數對比不同,rank重置為0。以此類推

??sql實現步驟如下:

select b.user_id, b.apply_id, if(@user_id = b.user_id, @rank := @rank , @rank := 0) as loan_n,@user_id:=b.user_id from (SELECT r.user_id,r.apply_id,@user_id := null, @rank := 0#count(apply_id) loan_nFROM`repayment` r LEFT JOIN app_user u ON r.user_id = u.id WHERE `repay_status` = '已還'GROUP BY r.user_id,r.apply_idorder by user_id,r.apply_id )b

??效果如下:

??較子查詢而言,這種方法執行效率更高。

三、多期產品

??多期產品需要注意的地方是:

??每一個訂單對應著不同期數的還款記錄。比如:6期的產品,就有6行貸后數據。我們要先把單筆借款的最后一期還款記錄單獨提取后再執行如單期產品相同的sql即可。

四、總結

  • 今天,我們針對一個簡單的金融場景需求(統計復借次數)做了一些簡單sql的嘗試,主要成果如下:

    • ① 金融產品復借次數的定義方法
    • ② mysql、sql_server、oracle等數據庫對應的sql函數有區別。mysql在無法使用oracle的一些高級分析函數的時候,可以通過底層sql來實現一些如組內統計、組內排序的功能。
    • ③ 到達一個目的地,往往有多條路徑,我們都想要找最優美的那條。
    • ④ 小伙伴們如果還有其他實現這個功能的方式,歡迎評論,或者在公眾號留言。

??其實,sql能力的加強,就在于有效處理這種看起來簡單實際上復雜的問題,一次次的訓練,一次次的提升。

五、番外


??對數據分析、機器學習、數據科學、金融風控等感興趣的小伙伴,需要數據集、代碼、行業報告等各類學習資料,可添加微信:wu805686220(記得要備注喔!),也可關注微信公眾號:風控圏子(別打錯字,是圏子,不是圈子,算了直接復制吧!)

關注公眾號后,可聯系圈子助手加入如下社群:

  • 機器學習風控討論群(微信群)
  • 反欺詐討論群(微信群)
  • python學習交流群(微信群)
  • 研習社資料(qq群:102755159)(干貨、資料、項目、代碼、報告、課件)

相互學習,共同成長。

總結

以上是生活随笔為你收集整理的【数据库】SQL极速入门(多种方式查询用户复借次数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产毛片儿 | 火影黄动漫免费网站 | 天天摸天天做天天爽水多 | 国产尻逼视频 | 性欧美18 | 免费毛片在线播放 | 逼特逼在线视频 | 欧美yyy | 亚洲一区中文字幕在线观看 | 成人aaaa| 久久国产传媒 | 人人妻人人澡人人爽精品欧美一区 | 国产精品视频久久久久久久 | 亚洲春色在线观看 | 99涩涩| 亚洲欧美网址 | 成人午夜淫片免费观看 | 欧美精品成人一区二区三区四区 | 日韩精品一区二区三区中文在线 | 免费视频久久 | 国产综合内射日韩久 | 日韩一级视频在线观看 | 3d毛片 | 国产在线资源 | 激情小说在线 | 久久久久人妻一区精品色 | 三级中文字幕在线 | 精品人妻aV中文字幕乱码色欲 | 日韩精品一区二区三区久久 | 亚洲精品一区二三区 | 97福利| 色撸撸av | 午夜片在线观看 | 性一交一乱一色一免费无遮挡 | 一区二区三区在线观看免费 | 一区二区免费看 | 免费人妻一区二区三区 | 91国自啪 | 中文字幕一区二区三区波野结 | 国产精品熟女视频 | 国产探花在线精品一区二区 | 亚洲乱码国产乱码精品精98午夜 | 屁屁影院一区二区三区 | 一本久道久久 | 超碰97在线资源站 | 国产a∨精品一区二区三区仙踪林 | 丰满人妻一区二区三区在线 | 91资源在线观看 | 永久免费av在线 | 国产成人久久精品麻豆二区 | 国产福利片一区二区 | 亚洲成人免费网站 | 久久女女 | 精品无码人妻一区二区三 | av观看网站 | 国产无码精品在线播放 | 麻豆传媒在线看 | 久久久av免费| 无码人妻精品一区二区蜜桃网站 | 久久久视屏 | 午夜精品亚洲 | 久久精品999 | 香蕉污视频在线观看 | 少妇色 | 亚洲天堂一区在线观看 | 久久99深爱久久99精品 | 欧美成人福利视频 | 欧美一级片播放 | 色.com| 乱中年女人伦 | 国产中文字幕亚洲 | 免费一级黄色片 | 国语对白少妇spa私密按摩 | 777免费视频 | 国产aⅴ无码片毛片一级一区2 | 神秘马戏团在线观看免费高清中文 | 成人黄色大全 | 国产精品白嫩白嫩大学美女 | 色哟哟精品一区 | 九九黄色片 | 午夜视频免费观看 | 久草97 | 国产艳俗歌舞表演hd | 人妻少妇精品视频一区二区三区 | 免费毛片基地 | 永久精品 | 99国产精品欲 | 国产群p视频 | 国产亚洲欧美日韩精品一区二区三区 | 久久窝窝| 91大神小宝寻花在线观看 | 日韩网站视频 | 男插女视频在线观看 | 日韩www.| 欧美日韩一区二区区别是什么 | 亚洲久视频 | 午夜在线视频播放 | 久久久影视 | 欧美三日本三级少妇三 |