【问题标题】:MySQL-Show, for each year, the largest department in that year, and its average salaryMySQL-Show,对于每一年,当年最大的部门,以及它的平均工资
【发布时间】:2020-07-31 07:08:37
【问题描述】:

根据这个问题,输出应该是“每年最大的部门,然后是那个部门的平均工资”。在 MySQL 数据库中,salary 和 dept_emp 表中有 'from_date' 和 'to_date' 列。并且没有任何特定年份包含所需的最大部门和薪水的确切年份。

在我下面的查询中,它在同一年返回两次或更多次。但我每年只需要最大的部门及其 avg_salary。但我不确定我必须采取哪个日期才能检索到正确的结果。

注意:在薪水表中 -'from_date' 是关于从那一年到 'to_date' 年开始获得薪水的一个人。而在 dept_emp 表中,'from_date' 大约是每个人的工作开始年份到 'to_date'。除了这些日期之外,没有添加日期。

我想举个例子来说明问题:

例如 2000 年,部门-财务,emp-34000-avg_salary-56700 的编号。 2000 年最大的部门是财务部门,该部门的平均工资为 56700。

提前感谢您的帮助:)

SELECT 
dept_name AS Department_Name,
COUNT(de.emp_no) AS Number_of_Employees,
YEAR(s.from_date) AS Year,
AVG(salary) AS Average_Salary
FROM
dept_emp de
    JOIN
departments d ON de.dept_no = d.dept_no
    JOIN
salaries s ON de.emp_no = s.emp_no
GROUP BY YEAR(s.from_date)

【问题讨论】:

标签: mysql


【解决方案1】:

您为什么不尝试在 Number_Of_Employees 列上添加一个 MAX 子句?

    SELECT 
dept_name AS Department_Name,
MAX(COUNT(de.emp_no)) AS Number_of_Employees,
YEAR(s.from_date) AS Year,
AVG(salary) AS Average_Salary
FROM
dept_emp de
    JOIN
departments d ON de.dept_no = d.dept_no
    JOIN
salaries s ON de.emp_no = s.emp_no
GROUP BY YEAR(s.from_date)

【讨论】:

  • 它对我不起作用,我收到类似'无效使用组函数('
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2021-09-09
  • 2016-07-07
  • 2020-08-09
  • 1970-01-01
  • 2016-08-13
相关资源
最近更新 更多