一、OracleLag函數
OracleLag函數用於獲取前一行指定列的值,被廣泛應用於數據分析和報表開發。其基本語法如下:
LAG(value_expression [,offset] [,default]) OVER ([PARTITION BY partition_expression] ORDER BY order_expression)
其中,value_expression指定需要獲取的列;offset用於指定獲取前幾行的值,缺省值為1;default用於指定當獲取不到數據時返回的默認值,缺省值為NULL。OVER及之後的語句用於指定分區和排序規則。
二、OracleLag函數nvl
OracleLag函數配合nvl函數使用可以返回指定列的非空上一行或者默認值。nvl函數的基本語法如下:
NVL(expr1,expr2)
其中,expr1指定待判斷的表達式,如果結果非空則返回該結果,否則返回expr2指定的默認值。
下面是一個示例代碼:
SELECT job_id,hire_date,salary, nvl(lag(salary) OVER (ORDER BY hire_date),0) AS prev_salary FROM employees;
在上述代碼中,我們使用了OracleLag函數結合nvl函數來返回前一行非空的薪水值,如果找不到,則返回0。
三、OracleMax函數
OracleMax函數用於返回指定列的最大值,常用於求取數據分析和報表開發中的最高值。其基本語法如下:
MAX(value_expression) OVER ([PARTITION BY partition_expression] ORDER BY order_expression)
其中,value_expression指定需要獲取最大值的列。OVER及之後的語句用於指定分區和排序規則。
下面是一個示例代碼:
SELECT job_id,hire_date,salary, max(salary) OVER (ORDER BY hire_date) AS max_salary FROM employees;
在上述代碼中,我們使用OracleMax函數返回當前行之前最高的薪水值。
四、OracleMod函數
OracleMod函數用於返回兩個參數相除的餘數,常用於數據分析和統計計算等場景。其基本語法如下:
MOD(dividend,divisor)
其中,dividend指定被除數,divisor指定除數。
下面是一個示例代碼:
SELECT mod(salary,1000) AS remainder FROM employees;
在上述代碼中,我們使用OracleMod函數返回每位員工的薪水除以1000的餘數。
五、OracleIf函數
OracleIf函數用於實現條件判斷,常用於數據篩選和處理中。其基本語法如下:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result3 END
其中,condition1、condition2等用於指定判斷條件,result1、result2等用於指定相應的返回結果。當所有條件都不符合時,返回result3指定的默認值。
下面是一個示例代碼:
SELECT job_id,salary, CASE WHEN salary > 5000 THEN 'High' WHEN salary > 3000 THEN 'Medium' ELSE 'Low' END AS salary_level FROM employees;
在上述代碼中,我們使用OracleIf函數返回員工薪水水平分類(高、中、低)。
六、OracleDate函數
OracleDate函數用於處理日期型數據,常用於日期計算和格式化輸出。其基本語法如下:
TO_DATE(date_string,format_string) -- 將字符串轉換為日期 TO_CHAR(date_value,format_string) -- 將日期轉換為字符串 ADD_MONTHS(date_value,month_offset) -- 對日期進行月份偏移 MONTHS_BETWEEN(date_value1,date_value2) -- 計算兩個日期相差的月數
其中,TO_DATE函數用於將日期字符串轉換為日期型數據,TO_CHAR函數用於將日期型數據格式化輸出。ADD_MONTHS函數用於對日期進行月份偏移,MONTHS_BETWEEN函數用於計算兩個日期相差的月數。
下面是一個示例代碼:
SELECT hire_date, TO_CHAR(hire_date,'YYYY-MM-DD') AS formatted_date, ADD_MONTHS(hire_date,12) AS next_year, MONTHS_BETWEEN(hire_date,SYSDATE) AS months_since_hire FROM employees;
在上述代碼中,我們使用OracleDate函數對員工的入職日期進行了格式化輸出和計算月份偏移。
七、Oracle函數substr
Oracle函數substr用於提取指定字符串中的部分字符,常用於字符串處理和數據清洗等場景。其基本語法如下:
SUBSTR(string,start_index[,length])
其中,string指定待提取的源字符串,start_index指定開始提取的位置,length用於指定提取的長度,默認為源字符串的長度。
下面是一個示例代碼:
SELECT first_name,last_name, SUBSTR(email,INSTR(email,'@')+1) AS domain FROM employees;
在上述代碼中,我們使用Oracle函數substr從員工郵件地址中提取出郵件域名。
八、OracleRank函數
OracleRank函數用於對記錄進行排名計算,常用於數據分析和排名展示等場景。其基本語法如下:
RANK() OVER ([PARTITION BY partition_expression] ORDER BY order_expression)
其中,OVER及之後的語句用於指定分區和排序規則。
下面是一個示例代碼:
SELECT first_name,last_name,salary, RANK() OVER (ORDER BY salary DESC) AS salary_rank FROM employees;
在上述代碼中,我們使用OracleRank函數對員工按照薪水進行排名,返回每個員工的薪水排名。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/277181.html