select
dr.emp_no emp_no
,dr.salary salary
from
(select
emp_no
,salary
,dense_rank()over(order by salary desc) posn
from salaries) dr
where dr.posn=2
order by dr.emp_no
本题有几个注意点:
1.根据题目要求,需要使用窗口函数对salaries表的salary字段进行排序,需要用“并列连续性函数”;
2.其次要选排名第二的薪水,要对salary字段“降序排序”,因此括号内要加desc;
3.另外由于使用窗口函数,必须要用子查询,因此子查询产生的表格需要别名dr,外面套的查询语句中的字段名前要加dr.
相关知识点复习:
rank()over():跳跃式排序99、99、90、89,通过这个函数得到的排名是1、1、3、4
dense_rank()over():并列连续型排序99、99、90、89,通过这个函数得到的排名是1、1、2、3
row_number()over():连续型排序99、99、90、89,通过这个函数得到的排名是1、2、3、4