柚子快報(bào)邀請碼778899分享:數(shù)據(jù)庫 SQL常見函數(shù)整理
柚子快報(bào)邀請碼778899分享:數(shù)據(jù)庫 SQL常見函數(shù)整理
1. 用法 窗口函數(shù),用于訪問窗口中當(dāng)前行之前的行的數(shù)據(jù)。該函數(shù)可以根據(jù)需要計(jì)算當(dāng)前行之前的值,使我們能夠輕松地比較不同行之間的差異和變化。
2. 基本語法
LAG(column, offset, default_value) OVER (ORDER BY column)
column:代表在返回結(jié)果集中要檢索一行的列offset:可選的,表示返回結(jié)果集中所檢索行向前的行數(shù)default_value:可選的,用于指定未找到所檢索行時(shí)要返回的默認(rèn)值ORDER BY子句:指示LAG() 函數(shù)應(yīng)按照哪個(gè)列順序來排序所使用的窗口
3. 應(yīng)用示例 有一張銷售數(shù)據(jù)表 Sales, 記錄每年公司的銷售數(shù)據(jù),如果想得到每年和前一年的銷售數(shù)據(jù)的對比差異和成長率,如何實(shí)現(xiàn)?
--建表
if object_id('Sales','u') is not null drop table Sales
go
create table Sales(
Year varchar(10)
, SalesValue int
)
go
insert into Sales
values
( '2018',120)
,( '2019',300)
,( '2020' ,240)
,( '2021' ,180)
,( '2022' ,290)
,( '2023' ,400 )
go
--查詢
select *
,lag(SalesValue , 1 ) over(order by Year ) as SalesValue_LastYear
,SalesValue - lag(SalesValue , 1 ) over(order by Year ) as DIff
,SalesValue * 1.0 / lag(SalesValue , 1 ) over(order by Year ) -1 as Growth
from Sales
查詢結(jié)果如下圖所示:
柚子快報(bào)邀請碼778899分享:數(shù)據(jù)庫 SQL常見函數(shù)整理
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。