mysql:我检索了一个按部门排序的最高工资列表如何找到这些最高工资的最低值?

xfyts7mz  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(342)

我有一个大学数据库,从讲师表中,最初我被告知要找到每个系教授的最高工资,并将其重命名为“最高工资”。讲师表有四列,“id”、“name”、“dept\u name”和“salary”。我通过下面的查询找到了每个部门的最高工资:

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;

但是,这会给我一条错误消息,指出“字段列表中的未知列‘salary’”。
关于如何在一组最大值中找到最小值,我在教科书或网上似乎找不到任何答案,我只得到了一个隐晦的提示“你必须使用嵌套查询”,这没有多大帮助。
还有人听说过怎么做这种事吗?

tmb3ates

tmb3ates1#

你真的很接近

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

相关问题