首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么此选择不选择行?

为什么此选择不选择行?
EN

Stack Overflow用户
提问于 2020-04-24 09:22:50
回答 3查看 43关注 0票数 0

我试图选择'IT‘部门的最高收入者,但我一直没有选择行。薪资和名称在称为员工的表中,而department_name在一个名为部门的表中。有谁能解释一下为什么不选择行,我该怎么做?

代码语言:javascript
复制
SELECT first_name, last_name, salary, department_name
FROM employees
JOIN departments on departments.department_id = employees.department_id
WHERE salary = (SELECT max(salary) FROM employees WHERE department_name = 'IT'); 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-24 09:28:09

为什么这个选择没有选择行?

查询失败,因为在department_name表中没有列employees。因此,您的子查询没有执行您预期的操作:

代码语言:javascript
复制
where salary = (SELECT max(salary) FROM employees WHERE department_name = 'IT'); 

如果要使用子查询执行此操作,则需要将其关联起来:

代码语言:javascript
复制
select e.first_name, e.last_name, e.salary, d.department_name
from employees e
inner join departments d on d.department_id = e.department_id
where 
    d.department_name = 'IT'
    and e.salary = (select max(e1.salary) 
                    from employees e1 
                    where e1.department_id = e.department_id); 
票数 1
EN

Stack Overflow用户

发布于 2020-04-24 09:27:17

如果IT部门有一个以上的最高收入者,您可以使用dense_rank

代码语言:javascript
复制
select   
    first_name, 
    last_name, 
    salary, 
    department_name
from
(
    select 
        first_name, 
        last_name, 
        salary, 
        department_name,
        dense_rank() over (partition by department_name order by salary desc) as rnk
    FROM employees e
    JOIN departments d
    on d.department_id = e.department_id
    where department_name = 'IT'
) val
where rnk = 1
票数 1
EN

Stack Overflow用户

发布于 2020-04-24 09:25:20

使用row_number()

代码语言:javascript
复制
SELECT t.*
FROM (SELECT emp.first_name, emp.last_name, dempt.salary, dempt.department_name,
             ROW_NUMBER() OVER(PARTITION BY dept.department_name ORDER BY dept.salary DESC) AS SEQ
      FROM employees emp JOIN 
           departments dept 
           ON dept.department_id = emp.department_id
      WHERE dempt.department_name = 'IT'
     ) t
WHERE seq = 1;

如果薪资有联系,那么您可以使用rank()代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61405096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档