自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server這兩個高級函數(shù)的用法,你學(xué)會了嗎?

運維 數(shù)據(jù)庫運維
這兩個函數(shù)可以把之前要關(guān)聯(lián)查詢的方法,改為可直接獲取當(dāng)前數(shù)據(jù)上下相鄰多少行數(shù)據(jù),可以很方便的對上下相鄰兩行的數(shù)據(jù)進行加減乘除。今天我們就給大家介紹一下這兩個函數(shù)的用法。

[[316397]]

SQL Server從2012版本開始,引入了LEAD和LAG函數(shù),這兩個函數(shù)可以把之前要關(guān)聯(lián)查詢的方法,改為可直接獲取當(dāng)前數(shù)據(jù)上下相鄰多少行數(shù)據(jù),可以很方便的對上下相鄰兩行的數(shù)據(jù)進行加減乘除。今天我們就給大家介紹一下這兩個函數(shù)的用法。

LAG函數(shù)

LAG的作用

LAG 以當(dāng)前行之前的給定物理偏移量來提供對行的訪問。 在 SELECT 語句中使用此分析函數(shù)可將當(dāng)前行中的值與先前行中的值進行比較。

LAG的語法

LAG (scalar_expression [,offset] [,default])      OVER ( [ partition_by_clause ] order_by_clause )

參數(shù)解釋

scalar_expression

要根據(jù)指定偏移量返回的值。 這是一個返回單個(標量)值的任何類型的表達式。scalar_expression 不能為分析函數(shù)。

offset

當(dāng)前行(從中獲得取值)后的行數(shù)。 如果未指定,則默認值為 1。 

OVER

為開窗函數(shù),LAG函數(shù)必須與開窗函數(shù)一起使用。

LAG示例 

  1. WITH T AS  
  2.  
  3. SELECT 1 ID,10 NUM  
  4. UNION ALL  
  5. SELECT 1,20  
  6. UNION ALL  
  7. SELECT 1,30  
  8. UNION ALL  
  9. SELECT 2,40  
  10. UNION ALL  
  11. SELECT 2,50  
  12. UNION ALL  
  13. SELECT 2,60  
  14.  
  15. SELECT ID,NUM,  
  16. LAG(NUM) OVER (PARTITION BY ID ORDER BY NUM) AS OneArgs,  
  17. LAG(NUM,1) OVER (PARTITION BY ID ORDER BY NUM) AS TowArgs,  
  18. LAG(NUM,2,0) OVER (PARTITION BY ID ORDER BY NUM) AS ThressArgs  
  19. FROM T 

(提示:可以左右移動代碼)

結(jié)果如下:

從上面的示例中我們可以看到

1、針對列OneArgs,組內(nèi)的NUM列的值默認向后偏移了一行,每組的第一行用默認的NULL來代替

2、針對TowArgs,使用了2個參數(shù)顯示的偏移行,NUM的值也是向后偏移一行。

3、針對ThreeArgs,不僅使用了顯示的偏移2行,而且第三個參數(shù)將偏移后默認值NULL改成了0

實戰(zhàn)例子:如何求解組內(nèi)上下兩行的和? 

  1. SELECT ID,NUM,  
  2. NUM+LAG(NUM,1,0) OVER (PARTITION BY ID ORDER BY NUM) AS Result  
  3. FROM T 

結(jié)果如下:

注意:第一行因為默認是0,所以每組第一行的結(jié)果是NUM+0=NUM

LEAD函數(shù)

LEAD函數(shù)與LAG函數(shù)剛剛相反,它是向前偏移指定的行數(shù),默認是1行。

語法哈參數(shù)與LAG類似,這里就不重復(fù)介紹了。我們直接看示例: 

  1. SELECT ID,NUM,  
  2. LEAD(NUM) OVER (PARTITION BY ID ORDER BY NUM) AS OneArgs,  
  3. LEAD(NUM,1) OVER (PARTITION BY ID ORDER BY NUM) AS TowArgs,  
  4. LEAD(NUM,2,0) OVER (PARTITION BY ID ORDER BY NUM) AS ThressArgs  
  5. FROM T 

結(jié)果:

使用情況與LAG函數(shù)類似,只是組內(nèi)數(shù)據(jù)分別向前偏移了指定行數(shù)。

實戰(zhàn)示例:求解同組內(nèi)上下兩行的差? 

  1. SELECT ID,NUM,  
  2. LEAD(NUM,1,0) OVER (PARTITION BY ID ORDER BY NUM)-NUM AS Result  
  3. FROM T 

結(jié)果:

每組最后一行默認是0,所以0-NUM=-NUM

以上就是這兩個函數(shù)的相關(guān)用法。 

 

責(zé)任編輯:龐桂玉 來源: 數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2022-12-06 08:37:43

2023-09-06 11:31:24

MERGE用法SQL

2022-07-13 08:16:49

RocketMQRPC日志

2022-09-16 07:24:12

Python 的四舍

2023-11-08 10:12:40

架構(gòu)函數(shù)元素

2023-10-13 09:04:09

2024-06-12 08:36:25

2022-04-13 09:01:45

SASSCSS處理器

2023-08-08 08:23:08

Spring日志?線程池

2022-09-29 08:32:14

查詢語句OR

2023-06-05 08:36:04

SQL函數(shù)RANK()

2023-12-27 09:32:47

SQL語句數(shù)據(jù)

2023-07-03 07:20:50

2022-11-03 08:16:33

MySQL·窗口函數(shù)

2022-08-09 08:25:44

Stream創(chuàng)建流流計算

2022-07-08 09:27:48

CSSIFC模型

2024-02-02 11:03:11

React數(shù)據(jù)Ref

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具
點贊
收藏

51CTO技術(shù)棧公眾號