SQL查询找出涉及多个表的第三高工资

时间:2012-08-31 10:11:25

标签: sql-server

我有两张桌子..

人:

empid(primary key)
firstname
lastname
email

详细说明:

Did(primary key)
salary
designation
empid

现在,我想选择薪水第三高的员工firstnamelastnamesalary

如果你能建议我找到一个可以找到解决方案的SQL查询练习的网站(我不需要一个在线翻译,我有SQL Server 2008来练习),那也很棒,我已经完成了w3schools(这是真棒)但我现在需要练习,我试过sql.ex.ru但它没有那么有用。

4 个答案:

答案 0 :(得分:2)

 select firstname, lastname, salary 
 from 
 (
 select 
    employee.*, details.salary,
    row_number() over (order by salary desc) salaryrank
 from 
      employee
 inner join 
      details
           on employee.empid = details.empid
 ) v
 where salaryrank=3

至于解决方案的SQL问题,为什么不查看stackoverflow本身?找一个问题,看看你如何得到答案。然后看看评分最高的答案是什么

答案 1 :(得分:1)

假设您有包含以下字段值的表

<强>人

enter image description here

<强>详情

enter image description here

现在,如果你想找到第三高薪。那么,下面的查询会给你以下结果集。

enter image description here

<强>输出:

enter image description here

答案 2 :(得分:0)

在下面找到答案。

select * from empsal e where
3 =(select count(distinct empsal) from empsal where e.empsal<=empsal);

如果您需要第二个最高薪水,请将'3'替换为'2'。

答案 3 :(得分:0)

SELECT 
    p.firstname,
    p.lastname, 
    d.salary 
FROM 
    Persons p,
    Details d 
where 
    p.empid=d.empid  
order by 
    d.btID desc 
limit 2,1;