MySQL:我检索了按部门排序的最高工资列表。如何找到这些最高工资中的最小值?

Posted

技术标签:

【中文标题】MySQL:我检索了按部门排序的最高工资列表。如何找到这些最高工资中的最小值?【英文标题】:MySQL: I retrieved a list of maximum salaries ordered by department. How to find the minimum of these maximum salaries? 【发布时间】:2018-06-11 05:26:45 【问题描述】:

我有一个大学数据库,从教练表中,最初我被告知要找到每个部门的最高教授薪水并将其重命名为“max_salary”。教师表有四列,“ID”、“姓名”、“部门名称”和“工资”。我使用以下查询找到了每个部门的最高工资:

SELECT dept_name, MAX(salary) AS max_salary
FROM instructor
GROUP BY dept_name;

然后我被要求找出上面查询产生的一组薪水的最低值。我相信我可能很接近这个查询:

SELECT min(salary)
    FROM 
        (SELECT dept_name, MAX(salary)
        FROM instructor
        GROUP BY dept_name) as lowest; 

但是,这给了我一条错误消息,指出“'字段列表'中的未知列'薪水'。

我似乎在教科书或网上找不到任何关于如何找到一组最大值中的最小值的答案,而且我只得到了一个神秘的提示“你必须使用嵌套查询”,它有没有太大帮助。 有没有其他人听说过如何做这样的事情?

【问题讨论】:

给 MAX(salary) 一个别名。如 MAX(salary) 为 max_salary 然后选择 min(max_salary)。 【参考方案1】:

你真的很亲密

SELECT min(max_sal) as lowest
FROM 
(
   SELECT dept_name, MAX(salary) as max_sal
   FROM instructor 
   GROUP BY dept_name
) as tmp

您需要为计算列指定别名。我用max_sal。然后你可以在外部查询中引用它。

另一种可能是对数据进行排序并仅获取第一个结果:

SELECT dept_name, MAX(salary) as max_sal
FROM instructor 
GROUP BY dept_nam
ORDER BY MAX(salary) ASC
LIMIT 1

【讨论】:

哇,非常感谢。我知道我必须有一个别名,但我似乎不知道该放在哪里或制作什么。你不会相信我已经尝试了多久。

以上是关于MySQL:我检索了按部门排序的最高工资列表。如何找到这些最高工资中的最小值?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL从青铜到王者第六篇:MySQL复合查询

MySQL部门工资最高的员工

MySQL 实战

如何在EXCEL中筛选出工资最高和最低的两个人信息

2022-12-03:部门工资最高的员工。以下数据Max 和 Jim 在 IT 部门的工资都是最高的,Henry 在销售部的工资最高。sql语句如何写? 输出结果如下: department emp

用oracle怎样查询每个部门的部门编号,部门名称,平均工资,最高工资和最低工资