Sql 如何在表中找到大于引用它的所有值的目标值?

Sql 如何在表中找到大于引用它的所有值的目标值?,sql,oracle,Sql,Oracle,我需要找到在所有下属的雇佣日期之后被雇佣的老板的名字。 以下是我到目前为止得到的信息: SELECT DISTINCT TRIM(boss.first_name || ' ' || boss.last_name) AS NAME, boss.phone_number AS phone FROM HR.employees e INNER JOIN HR.employees boss ON (boss.employee_id = e.manager_id) WHER

我需要找到在所有下属的雇佣日期之后被雇佣的老板的名字。 以下是我到目前为止得到的信息:

SELECT DISTINCT 
    TRIM(boss.first_name || ' ' || boss.last_name) AS NAME,
    boss.phone_number AS phone
FROM
    HR.employees e
    INNER JOIN HR.employees boss ON (boss.employee_id = e.manager_id)
WHERE
    boss.hire_date > MIN(e.hire_date)
    AND boss.hire_date > MAX(e.hire_date);
其目的是检查boss.hire_日期是否大于其下属最早和最新的雇用日期

但是,我收到以下错误消息:

ORA-00934:此处不允许使用组功能


知道我必须如何重新构造查询吗?

这应该会更好

SELECT TRIM(boss.first_name || ' ' || boss.last_name) AS NAME,
     boss.phone_number AS phone
FROM HR.employees boss 
INNER JOIN
(   
SELECT e.manager_id, MAX(e.hire_date) AS Max_hire_date
FROM  HR.employees e
GROUP BY e.manager_id
) m ON m.manager_id=boss.employee_id
WHERE boss.hire_date > m.Max_hire_date

请注意,我认为老板不能自我管理。在通常的分层数据库中,顶级管理器的manager_id字段为NULL。如果在您的数据中,某个上司可以拥有其经理id=其自己的员工id,那么它将不起作用。

使用子选择获取给定上司的所有员工的最长雇佣日期,并在
WHERE
子句中检查该日期如何

您可能需要筛选此列表中不是老板的员工

比如:


DISTINCT是
选择DISTINCT
的一部分。也就是说,将DISTINCT关键字移到上面一行-使代码更清晰。
SELECT boss.*
  FROM hr.employees boss
 WHERE boss.hire_date > (SELECT MAX(e.hire_date)
                           FROM hr.employees e
                          WHERE boss.employee_id = e.manager_id);