【问题标题】:sql join with two tables with avgsql连接两个带有avg的表
【发布时间】:2021-01-28 17:41:18
【问题描述】:

我有两张桌子 员工:

employee_numberemployee_name 工资 divison_id

部门:

division_id 分部名称

如何显示每个部门所有员工的员工编号、员工姓名、部门名称和平均工资。

【问题讨论】:

  • 你试过什么?这是一个非常基本的 SQL 查询。
  • 涉及两个表:JOIN.
  • 平均工资:GROUP BY
  • minimal reproducible example - 为您提供帮助。

标签: sql join average


【解决方案1】:

你可以试试:

SELECT employee.employee_number, employee.employee_name, division.division_name, 
    AVG(salary) AS AvgSalary
FROM employee
JOIN division ON division.division_id = employee.division_id
GROUP BY employee_number, employee_name, division_name

但是,我不确定这会达到您想要的结果。

要显示“每个部门所有员工的平均工资”,您可以执行以下操作:

SELECT division.division_name AS Division, AVG(salary) AS AvgSalary FROM division
JOIN employee ON employee.division_id = division.division_id
GROUP BY division_name

【讨论】:

    【解决方案2】:
    SELECT employee_number, employee_name, division_name, AVG(amount)
    FROM employee
    JOIN division ON division.division_id=employee.division_id
    GROUP BY division_name;
    

    【讨论】:

      【解决方案3】:

      如果您的数据库支持解析功能,那么您可以按如下方式使用它:

      SELECT e.employee_number, e.employee_name, d.division_name, 
             AVG(salary) over (partition by d.division_id) as avg_sal_div
        FROM employee e
        JOIN division d ON d.division_id=e.division_id;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 2017-01-25
        • 2012-02-28
        相关资源
        最近更新 更多