opencv4.4.0函数手册_实战 MySQL8.0 窗口函数的巧妙应用
大家好,我是知數(shù)堂SQL 優(yōu)化班老師 網(wǎng)名:騎龜?shù)耐米?/p>
今天給大家?guī)淼氖?窗口函數(shù)的應(yīng)用
因為需求希望我,提供腳本,直接上腳本
WITH t AS ( SELECT 1 rn, 3.0 v FROM dual UNION ALL SELECT 2, 4.5 FROM dual UNION ALL SELECT 3, 6.0 FROM dual UNION ALL SELECT 4, 11.0 FROM dual UNION ALL SELECT 5, 3.0 FROM dual )select * from t有如上圖所示的累積積分情況,現(xiàn)在如果消耗了11分,要從第一個開始清零得到如下
左邊表示扣除的,右邊表示使用的。
這樣的需求,怎么實現(xiàn)呢?
我們現(xiàn)在來分析這個需求,首先看下rem_v 這個列,是個扣除后的剩余積分,
我們只需一個累加值,然后這個累加值和一個扣除的總積分相比較,如果積分累加值,小于這個要扣除的總分就變成0就行
如本次案例中,要扣除的總積分是11,累加值如下
這里的要扣除的是11 ,累加值是s ,如果s<x 那么為0
如果s-v < x 那么就是求扣除積分后的變化的最后一行
那么就需要 s-x 這里的rn=3的行
否則就返回v
先忙是具體的SQL
第二個列跟第一個列思路相反就行
兩個需求整理之后的 SQL
需求相對很復(fù)雜,這里解決的核心問題就是做的中間結(jié)果集,累加值,猶如輔助線,把問題都關(guān)聯(lián)起來了!
剩下的就是根據(jù)數(shù)據(jù),使用case when 語句做判斷就行。
MySQL 8.0 開始 提供的窗口函數(shù),為我們解決類似的問題,提供了很多方便。
在我之前寫的系列文章中,也提供了窗口函數(shù)的具體使用方法和一些特殊的使用方法
如
SQL優(yōu)化大神帶你寫有趣的SQL(9) 自定義變量的應(yīng)用(2)
這篇講了,能大量減少代碼的window 函數(shù)。
謝謝大家~ 歡飲轉(zhuǎn)發(fā)
我的微信公眾號:SQL開發(fā)與優(yōu)化(sqlturning)
總結(jié)
以上是生活随笔為你收集整理的opencv4.4.0函数手册_实战 MySQL8.0 窗口函数的巧妙应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泰坦尼克号数据集_泰坦尼克号项目可视化
- 下一篇: wireshark使用_第一次使用Wir