176. 第二高的薪水

176. 第二高的薪水_第1张图片

176. 第二高的薪水_第2张图片 

 

select 
NVL((select Salary
from (select distinct Salary, rownum rnum
           from (select distinct Salary
                from Employee
                order by Salary desc)
          where rownum <= 2 )
where rnum >= 2), NULL)
as "SecondHighestSalary" 
from dual

NVL函数的功能是实现空值的转换,根据第一个表达式的值是否为空值来返回相应的列名或表达式,主要用于对数据列上的空值进行处理,语法格式如:NVL( string1, replace_with)。

如果第一个参数的值为空值,则返回第二个参数的值,否则返回第一个参数的值。如果两个参数的值都为空值,则返回空值。该函数的目的是把一个空值(null)转换成一个实际的值,两个参数可以是任何类型的数据,如数字型、字符型和日期型,但两个参数的数据类型必须为同一个类型(或能够由Oracle隐式转换为相同的类型)。
 

--comm为需要判断是否为空的列名
数字型: NVL(comm,0);
 
字符型: NVL( TO_CHAR(comm), 'No Commission')
 
日期型: NVL(hiredate,' 31-DEC-99')

你可能感兴趣的:(sql,数据库,mysql)