Найти 2 самых высоких зарплаты из нескольких таблиц соединений, где зарплата> N - PullRequest
0 голосов
/ 24 сентября 2019
select name
    ,EmployeeTable.id
    ,EmployeeTable.salary
    ,empaddress.StateID
    ,cname
    ,sname
from EmployeeTable 
inner join EmpAddress on EmployeeTable.id=EmpAddress.id 
inner join CityTable on CityTable.ID= EmpAddress.id 
inner join StateTable on CityTable.ID=StateTable.ID
where salary>=15000 order by salary desc 

Ожидаемый результат может быть sal >= 15000 при 2 верхних окладах.

1 Ответ

0 голосов
/ 24 сентября 2019

Если вы хотите, чтобы 2 лучших сотрудника имели самую высокую зарплату, вы можете использовать

select top 2 name,EmployeeTable.id,EmployeeTable.salary,empaddress.StateID ,cname,sname  
from EmployeeTable inner join EmpAddress on EmployeeTable.id=EmpAddress.id inner join CityTable on CityTable.ID= EmpAddress.id inner join StateTable on 
  CityTable.ID=StateTable.ID

where salary>=15000 order by salary desc  

else Если вы хотите, чтобы сотрудники, у которых 2 высокие зарплаты, могли использовать это:

select name,EmployeeTable.id,EmployeeTable.salary,empaddress.StateID ,cname,sname  
from EmployeeTable inner join EmpAddress on EmployeeTable.id=EmpAddress.id inner join CityTable on CityTable.ID= EmpAddress.id inner join StateTable on 
  CityTable.ID=StateTable.ID

where salary in (select top 2 salary from EmployeeTable order by salary desc )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...