HI,你能告诉我SQL命令的语法,它给出了employee表中存储的工资范围中第二高的工资作为输出.SQL commnd的描述将受到欢迎......请帮助!!!
小智 6
select min(salary) from
(select top 2 salary from SalariesTable order by salary desc)
as ax
Run Code Online (Sandbox Code Playgroud)
这应该工作:
select * from (
select t.*, dense_rank() over (order by salary desc) rnk from employee t
) a
where rnk = 2;
Run Code Online (Sandbox Code Playgroud)
这将返回第二高薪.
dense_rank() over是一个窗口函数,它为您提供指定集合中特定行的排名.它是标准SQL,如SQL:2003中所定义.
窗口函数通常很棒,它们只是很多困难的查询.
略有不同的解决方案:
这是相同的,除了当数字1为平局时返回最高薪水:
select * from (
select t.*, row_number() over (order by salary desc) rnk from employee t
) a
where rnk = 2;
Run Code Online (Sandbox Code Playgroud)
更新:将排名更改为dense_rank并添加第二个解决方案.谢谢,IanC!
| 归档时间: |
|
| 查看次数: |
6786 次 |
| 最近记录: |