溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

oracle中LAG函數(shù)怎么用

發(fā)布時(shí)間:2021-11-10 09:09:45 來(lái)源:億速云 閱讀:1054 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章給大家分享的是有關(guān)oracle中LAG函數(shù)怎么用的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

該內(nèi)容來(lái)自官方翻譯,因?yàn)榻裉炜吹揭粋€(gè)查詢(xún)語(yǔ)句中使用該函數(shù),不是太明白用法,這里先簡(jiǎn)單了解一下。

oracle中LAG函數(shù)怎么用

LAG是一個(gè)分析函數(shù),主要提供用于同時(shí)訪問(wèn)多行數(shù)據(jù),且此數(shù)據(jù)不通過(guò)自連接獲取。當(dāng)從查詢(xún)獲取多行值和一個(gè)位置游標(biāo),LAG會(huì)訪問(wèn)游標(biāo)位置中物理偏移量?jī)?yōu)先的數(shù)據(jù),

offset(偏移量)參數(shù)為一個(gè)大于0的可選整數(shù)值。如果不指定偏移量,默認(rèn)值為1。

當(dāng)offset超過(guò)顯示范圍,則顯示選項(xiàng)default的值。如果不指定default值,則默認(rèn)為空。

{RESPECT | IGNORE} NULLS選項(xiàng)決定是否將空值或VALUE_EXPR表達(dá)式的值包含在內(nèi),或?qū)⑦@些值淘汰掉,默認(rèn)為RESPECT NULLS

對(duì)于表達(dá)式VALUE_EXPR,不可以在LAG中嵌套使用任何其他的分析函數(shù),但可以使用內(nèi)建函數(shù)。

文檔中給出的列子比較具有代表性:

SELECT hire_date, last_name, salary,

       LAG(salary, 1, 0 ) OVER (ORDER BY hire_date) AS prev_sal

  FROM employees

  WHERE job_id = 'PU_CLERK'

  ORDER BY hire_date;


HIRE_DATE           LAST_NAME                                                                       SALARY   PREV_SAL

------------------- --------------------------------------------------------------------------- ---------- ----------

2003-05-18 00:00:00 Khoo                                                                              3100          0

2005-07-24 00:00:00 Tobias                                                                            2800       3100

2005-12-24 00:00:00 Baida                                                                             2900       2800

2006-11-15 00:00:00 Himuro                                                                            2600       2900

2007-08-10 00:00:00 Colmenares                                                                        2500       2600

如何理解LAG工作的機(jī)制,因?yàn)楂@取的結(jié)果是多行數(shù)據(jù):

SQL> select hire_date,last_name,salary from employees where job_id = 'PU_CLERK' order by  hire_date;
HIRE_DATE           LAST_NAME                                                                       SALARY
------------------- --------------------------------------------------------------------------- ----------
2003-05-18 00:00:00 Khoo                                                                              3100
2005-07-24 00:00:00 Tobias                                                                            2800
2005-12-24 00:00:00 Baida                                                                             2900
2006-11-15 00:00:00 Himuro                                                                            2600
2007-08-10 00:00:00 Colmenares                                                                        2500

從上下兩個(gè)查詢(xún)結(jié)果不難看出,LAG將查詢(xún)的結(jié)果進(jìn)行偏移,其偏移量為1,獲得了上一個(gè)查詢(xún)結(jié)果,而第一行記錄(salary=3100)的上一個(gè)查詢(xún)不存在的時(shí)候,offset超過(guò)了顯示范圍,所以用指定的default值0替代。

感謝各位的閱讀!關(guān)于“oracle中LAG函數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI