sql - 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。
解决方案
假设您没有其他重复项且没有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;
推荐阅读
- postgresql - PSQL(postgres 或 redshift)存储变量以提示并将查询写入动态文件名
- kotlin - LibGDX Box2D 物理方向反转
- python - 如何在 Jupyter-Notebook 上显示“HTTP 错误 429”的完整响应?
- spring - 当独占消费者失败时要处理哪个 AmqpEvent 或 AmqpException
- php - Base64_encoder 行为中的安全性
- angular - 更新 Firestore 中所有文档中的地图字段
- node.js - 如何在 Node Express 应用程序更改时设置 WebStorm 2018 以刷新 Chrome
- sql - 在 Access 中动态构建 SQL 字符串
- javascript - 在烧瓶 Web 应用程序中使用 highcharts 饼图绘制数据
- python - @classmethod 不更新python中的类实例属性