首页 > 解决方案 > SQL - 查看经理是否向他正在管理的员工报告

问题描述

我有一个包含用户 ID 和经理 ID 列表的表。该表显示所有员工及其经理 - 经理也出现在“用户 ID”部分,然后他们的经理显示在经理字段中。

数据示例如下:

用户 ID 经理 ID
1 5
2 1
3 7
4 2
5 9
6 3
7 5
8 12
9 13
12 8

我想从我的分析中找到一个计数,其中向经理 5 报告的用户 1 也显示为另一种方式(经理 5 向经理 1 报告)。

因此,当我为上述分析运行 sql 时,我应该得到 1 条记录的计数(用户 8 正在向经理 12 报告,反之亦然)

希望这是有道理的。我正在使用 Oracle 12g。

标签: sqloracle

解决方案


假设您没有其他重复项且没有null值(如在您的示例数据中),您可以使用聚合:

select least(user_id, manager_id), greatest(user_id, manager_id)
from t
group by least(user_id, manager_id), greatest(user_id, manager_id)
having count(*) > 1;

推荐阅读