共計 1489 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章給大家分享的是有關 oracle 中 LAG 函數怎么用的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
該內容來自官方翻譯,因為今天看到一個查詢語句中使用該函數,不是太明白用法,這里先簡單了解一下。
LAG 是一個分析函數,主要提供用于同時訪問多行數據,且此數據不通過自連接獲取。當從查詢獲取多行值和一個位置游標,LAG 會訪問游標位置中物理偏移量優先的數據,
offset(偏移量)參數為一個大于 0 的可選整數值。如果不指定偏移量,默認值為 1。
當 offset 超過顯示范圍,則顯示選項 default 的值。如果不指定 default 值,則默認為空。
{RESPECT | IGNORE} NULLS 選項決定是否將空值或 VALUE_EXPR 表達式的值包含在內,或將這些值淘汰掉,默認為 RESPECT NULLS
對于表達式 VALUE_EXPR,不可以在 LAG 中嵌套使用任何其他的分析函數,但可以使用內建函數。
文檔中給出的列子比較具有代表性:
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;
------------------- --------------------------------------------------------------------------- ---------- ----------
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 工作的機制,因為獲取的結果是多行數據:
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
從上下兩個查詢結果不難看出,LAG 將查詢的結果進行偏移,其偏移量為 1,獲得了上一個查詢結果, 而第一行記錄 (salary=3100) 的上一個查詢不存在的時候,offset 超過了顯示范圍,所以用指定的 default 值 0 替代。
感謝各位的閱讀!關于“oracle 中 LAG 函數怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!