不使用SQL中的聚合函数的最高/最低值

use*_*852 0 mysql sql database postgresql

我有一个名为的表department,其中包含以下数据

DNO DNAME   SALARY
20  EE  30000
10  DoC 50000
30  ITS 20000
Run Code Online (Sandbox Code Playgroud)

我想选择具有最高和最低工资的员工而不使用GROUP函数或top-n分析或NOT EXISTS命令.任何帮助将不胜感激.谢谢

a_h*_*ame 8

最大 薪水:

SELECT *
FROM department d1
WHERE salary > ALL (SELECT d2.salary
                    FROM department d2
                    WHERE d2.dno <> d1.dno)
Run Code Online (Sandbox Code Playgroud)

最低工资:

SELECT *
FROM department d1
WHERE salary < ALL (SELECT d2.salary
                    FROM department d2
                    WHERE d2.dno <> d1.dno)
Run Code Online (Sandbox Code Playgroud)

两种解决方案都假设薪水不能为空