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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

發(fā)布時間:2025/4/16 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

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

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

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

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

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

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

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

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

總結

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

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