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

歡迎訪問 生活随笔!

生活随笔

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

数据库

SQL查询环比增长 前后行数据对比操作

發布時間:2025/3/17 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL查询环比增长 前后行数据对比操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有一個這樣的場景,A公司每年的是一家零售商,有一張表保存每年的營業額度,現在需要對比今年比去年收入是增加了還是減少了加了多少。

首先我們拿到這張表,可以自關聯但是關聯表的年份需要加1,這樣就可以上下年份關聯起來,下面我們來實現

select t1.years, t1.SumMoney as t1SumMoney ,case when t2.SumMoney is null then 0 else t2.SumMoney end as t2SumMoney,t1.SumMoney -case when t2.SumMoney is null then 0 else t2.SumMoney end as upMoney from (select ROW_NUMBER()over(order by Years) as thisId,Years,SumMoney from YearsBusiness ) as t1 left join (select ROW_NUMBER()over(order by Years) as thisId,Years,SumMoney from YearsBusiness )as t2 on t1.thisId =t2.thisId+1

結果如下:

結果出來了數據也沒有問題,但是這樣暴露一個問題就是每次操作的時候都進行兩次rownumber的生成,這里的排序消耗性能過大,然后關聯,我們知道關聯越多執行sql的效率就越低,所以我們要是能有方法找到這個數據的上一條記錄就好了。

這里我們想到了利用游標,但是每次記錄會大量損耗內存,如果數據量一多,那么執行效率也是低。

這里我們找到了sql給我們提供的一個LAG()函數,lag函數里面有三個參數,第一個是表達式,第二個是行補償,第三個參數是默認值。下面我們來實現

select years,SumMoney,SumMoney-LAG(summoney,1,0)over(order by years) as upMoney from YearsBusiness

結果如下:

?

?

總結

以上是生活随笔為你收集整理的SQL查询环比增长 前后行数据对比操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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