【问题标题】:Select statement that show the name, Job, manager name and salary for all the employees who work in any department with more than 2 employees?选择显示在任何拥有超过 2 名员工的任何部门工作的所有员工的姓名、职位、经理姓名和薪水的语句?
【发布时间】:2022-01-19 06:56:13
【问题描述】:

enter image description here大家好 我需要这个问题的帮助 选择显示姓名、工作、经理姓名和 所有在职员工的工资 有超过2名员工的部门吗?? 该表与数据库中的Scott和tiger相关(emp表,dept表?

我的查询:

select  m.ename manger
      , m.job
      , e. ename employee
from emp m join emp e on (m. empno-e.mer)
where m. deptno in
    (select d.deptno
     from dept d
     where m. deptno=d.deptno
     group by d. deptno
     having count (*) > 2)

【问题讨论】:

  • 到目前为止你尝试过哪些查询语句?
  • 选择 m.ename manger ,m.工作,例如ename employee from emp m join emp e on (m.empno-e.mer) where m. deptno (select d.deptno from dept d where m.deptno=d.deptno group by d.deptno with count (*)>2)
  • 好的,格式化并将其添加到问题中,并包含返回的数据,您将获得更多/更好的响应。
  • 我把图片包含数据
  • 这看起来像原始数据。我的意思是您的查询返回的结果。此外,他们不喜欢 SO 中的图片,因为您无法复制/粘贴内容进行测试。

标签: sql


【解决方案1】:

在这种情况下,使用更长的别名使其更具可读性。

select
  employee.ename as employee_name
, employee.job   as employee_job
, employee.sal   as employee_salary
, manager.ename  as manager_name
from emp employee
left join emp manager 
  on manager.empno = employee.mgr
where employee.deptno in (
    select deptno
    from emp
    group by deptno
    having count(*) > 2
);
员工姓名 |员工_工作 | EMPLOYEE_SALARY | MANAGER_NAME :------------ | :----------- | --------------: | :----------- 斯科特 |分析师 | 3000 |琼斯 福特 |分析师 | 3000 |琼斯 艾伦 |推销员 | 1600 |布莱克 病房 |推销员 | 1250 |布莱克 马丁 |推销员 | 1250 |布莱克 特纳 |推销员 | 1500 |布莱克 詹姆斯 |文员 | 950 |布莱克 米勒 |文员 | 1300 |克拉克 亚当斯 |文员 | 1100 |斯科特 琼斯 |经理 | 2975 |国王 布莱克 |经理 | 2850 |国王 克拉克 |经理 | 2450 |国王 史密斯 |文员 | 800 |福特 国王 |总统 | 5000 |

dbfiddle here

上的演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2012-08-02
    • 2014-05-17
    • 1970-01-01
    相关资源
    最近更新 更多