SQL-запрос с двумя условиями WHERE - PullRequest
0 голосов
/ 18 октября 2018

Моя задача:
Составить запрос, который получат сотрудники, которые получают наибольшую зарплату за свой опыт работы.Другими словами, Сотрудник, который получает самую большую зарплату с самым большим опытом.

Как я считаю, мне нужно сделать запрос с двумя условиями:

select * from employee where salary in (select max(salary) from employee) and 
hire_date in (select min(hire_date) from employee)

DB Structure

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Если я правильно понял, этот запрос решит вашу проблему.

SELECT TOP 1 WITH TIES * FROM 
    employee 
ORDER BY
  hire_date ASC,
  salary DESC
0 голосов
/ 18 октября 2018

Я думаю, это то, что вы пытаетесь сделать:

    select * from (
    select *,
    datediff(day,hire_date,getdate()) [Days_Worked],
    dense_Rank() over(Partition by datediff(day,hire_date,getdate()) order by salary desc) [RN]

    from employee 
    )a
    where a.RN = 1
order by Days_Worked DESC

Таким образом, вы получите список сотрудников с самой высокой зарплатой по сравнению с сотрудниками, которые работали столько же дней.

Просто обратите внимание, что с плотным рангом, если, например, 2 сотрудника проработали 88 дней и оба зарабатывают 50000 долларов (больше, чем кто-либо другой), в нем будут перечислены оба сотрудника, используйте ROW_NUMBER () вместо DENSE_RANK (), еслиВы хотите ограничить подобные примеры одним сотрудником.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...