具有两个WHERE条件的SQL查询

时间:2018-10-18 06:42:29

标签: sql sql-server syntax

我的任务是:
进行查询将使雇员获得最高的工作经验薪水。换句话说,是收入最高,经验最多的员工。

我认为,我需要使用两个条件进行查询:

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 :(得分:0)

我认为这就是您想要做的:

    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()将此类示例限制为1名员工。

答案 1 :(得分:0)

如果我正确理解,此查询可以解决您的问题。

var benefitpub = document.getElementById('pubbox');
var advbox2 = document.getElementById('advbox');

window.addEventListener('scroll', function(e) {
    if (document.body.scrollTop > benefitpub.getBoundingClientRect().top - 200) {
        benefitpub.style.visibility = 'inherit';
    }
    if (document.body.scrollTop > advbox2.getBoundingClientRect().top - 200) {
        advbox2.style.visibility = 'inherit';
    }
});