如何解决Hive SQL:如何识别组之间的重复项
我希望根据项目在跨组ID中查找重复项,例如:
希望根据ID组中Item的重复项来导出Dup变量。换句话说,如果在另一个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 |
+----+--------+-----+
我不确定是否首先通过按ID和Item对数据集进行重复数据删除来简化操作。
用于汇总的最终数据集(重复数据删除):
表2
+----+--------+-----+
| ID | Item | Dup |
+----+--------+-----+
| a | apple | yes |
| b | apple | yes |
| c | orange | no |
| d | pear | yes |
| f | pear | yes |
| e | mango | no |
+----+--------+-----+
我应该如何构造一个配置单元查询以检测重复项? 任何帮助将不胜感激!
解决方法
嗯。 。 。如果我理解正确,则可以使用聚合和窗口函数:
select id,item,(case when count(*) over (partition by item) > 1 then 'yes' else 'no' end) as dups
from t
group by id,item;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。