日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

opencv4.4.0函数手册_实战 MySQL8.0 窗口函数的巧妙应用

發(fā)布時間:2025/4/16 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv4.4.0函数手册_实战 MySQL8.0 窗口函数的巧妙应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家好,我是知數(shù)堂SQL 優(yōu)化班老師 網(wǎng)名:騎龜?shù)耐米?/p>

今天給大家?guī)淼氖?窗口函數(shù)的應用

因為需求希望我,提供腳本,直接上腳本

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

需求相對很復雜,這里解決的核心問題就是做的中間結(jié)果集,累加值,猶如輔助線,把問題都關聯(lián)起來了!

剩下的就是根據(jù)數(shù)據(jù),使用case when 語句做判斷就行。

MySQL 8.0 開始 提供的窗口函數(shù),為我們解決類似的問題,提供了很多方便。

在我之前寫的系列文章中,也提供了窗口函數(shù)的具體使用方法和一些特殊的使用方法

SQL優(yōu)化大神帶你寫有趣的SQL(9) 自定義變量的應用(2)

這篇講了,能大量減少代碼的window 函數(shù)。

謝謝大家~ 歡飲轉(zhuǎn)發(fā)

我的微信公眾號:SQL開發(fā)與優(yōu)化(sqlturning)

總結(jié)

以上是生活随笔為你收集整理的opencv4.4.0函数手册_实战 MySQL8.0 窗口函数的巧妙应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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