一、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函数对员工按照薪水进行排名,返回每个员工的薪水排名。