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;
我希望在 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;