当前位置: 首页 > 知识库问答 >
问题:

最高薪酬员工+各部门平均薪酬

桓风史
2023-03-14

员工属于一个部门(外键=D_ID)。员工有一个SSN(主键)、姓名、工资和D_ID。

SELECT 
    D.name, E.name, E.salary 
FROM 
    Employee E, Department D 
WHERE
    salary IN (SELECT MAX(E.salary) 
               FROM Employee E 
               GROUP BY E.D_ID)  
    AND E.D_ID = D.ID
SELECT AVG(E.salary) 
FROM Employee E 
GROUP BY E.D_ID

共有1个答案

范瀚昂
2023-03-14

您可以为此使用窗口函数

select department_name, employee_name, salary, avg_dept_salary 
from (
  select e.name as employee_name, 
         d.name as department_name, 
         e.salary,
         max(e.salary) over (partition by d.id) as max_dept_salary, 
         avg(e.salary) over (partition by d.id) as avg_dept_salary
  from Employee E
    join Department D on e.d_id = d.id
) t 
where salary = max_dept_salary
order by department_name;

以上是标准的ANSI SQL,运行在所有现代DBMS上。

 类似资料:
  • 问题内容: 我正在写一个查询,以查找收入高于其部门平均工资的员工。我需要显示员工ID,薪水,部门ID和该部门的平均工资。 我有一个几乎可以正常使用的查询,但它一直显示“ ORA-00904:“ AVG_SAL”:无效标识符”错误。我正确地做到了吗?为什么会出现此无效的标识符错误? 问题答案: 我不相信您可以在WHERE子句中引用列别名(在这种情况下为avg_sal)。 您需要重复该内部查询,即:

  • 在钉钉移动客户端添加智能薪酬后,可登录电脑端管理后台,开启高效算薪。 薪酬计算 1.新建薪资组 在薪资计算页面点击【新建薪资组】 确认算薪人员 2.核对算薪人员 检查当前薪资组人员是否有错漏 3.为员工定薪 点击批量定薪 导入薪资表 4.专项附加扣除 点击批量导入 导入专项附加扣除信息 5.核算薪资 点击同步数据,同步钉钉考勤数据 点击导入浮动数据 导入浮动薪资表 点击开始计算,计算薪资 6.发送

  • 问题内容: 我需要有一个清单,每个部门只有一名最高薪水雇员。allEmployees是源列表。 问题答案: 您可以使用分组收集器来做到这一点: 与静态导入 此代码创建了所有员工的,并在的帮助下将其与部门分组。对于分类为同一键的所有值,我们只需要保留薪水最高的员工,因此我们将其与进行比较,比较器会将薪金与进行比较。由于返回一个(以处理列表为空的情况),我们通过调用来包装它,并返回一个仅返回雇员的装订

  • 问题内容: 我需要获得fname,lname,比平均工资低400.00美元的员工薪水,即使在加薪10%之后。 我能够使薪水低于平均薪水的员工,但不确定如何使加薪后的薪水低于400美元的员工。 我正在使用MySQL。谢谢你。 这给了我工资低于平均工资的员工: 我当时在想这样的事情,但这是行不通的。未知专栏新闻: 问题答案: 您有一个正确的想法,就是不能在这样的子句中使用别名。只需直接使用公式,就可以

  • Mike Murray, a surprisingly hapless HR manager at Microsoft, made a number of goofs, but the doozie was introducing a "Ship It" award shortly after he started the job. The idea was that you would get

  • 问题内容: 假设您得到以下名为Employee的简单数据库表,该表具有2个列,分别名为Employee ID和Salary: 我想写一个查询,从员工那里选择max(salary)作为max_salary,2nd_max_salary 然后它应该返回 我知道如何找到第二高的薪水 或找到第n个 但我无法弄清楚如何将这2个结果结合起来以获得所需的结果 问题答案: 您可以只运行2个查询作为内部查询以返回2