您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(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)單了解一下。
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ò),可以把它分享出去讓更多的人看到吧!
免責(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)容。