问题描述
我希望在ID组之间找到重复项。
Dup变量定义一个项目是否已在其他ID组中重新出现。换句话说,如果在另一个ID中找到了相同的项目,则Dup为“是”。如果项目仅在同一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查询来检测重复项(我在蜂巢环境中工作,但是大多数语法应该相似)? 任何帮助将不胜感激!
解决方法
您可以使用如下窗口功能:
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;