SQL : 识别跨组的项目重复项

SQL : Identify item duplicates across groups

我希望在 ID 组中找到重复项。

Dup 变量定义一个Item 是否在其他ID groups.In 中重新出现,换句话说,如果在另一个ID 中找到相同的项目则Dup 是'yes'。如果 Item 仅在同一 ID 内重复,则 Dup 为 'no'.

结果将如下所示:

表 1:

+----+--------+-----+
| ID |  Item  | Dup |
+----+--------+-----+
| a  | apple  | yes |
| a  | apple  | yes |
| b  | apple  | yes |
| c  | orange | no  |
| c  | orange | no  |
| d  | pear   | yes |
| f  | pear   | yes |
| e  | mango  | no  |
+----+--------+-----+

我应该如何构造一个 sql 查询来检测重复项(我在配置单元环境中工作,但大多数语法应该相似)? 任何帮助将不胜感激!

您可以像这样使用 window 函数:

select t.*,
       (case when min(id) over (partition by item) = max(id) over (partition by item)
             then 'no' else 'yes'
        end) as dups
from t;