配置单元sql:如何跨组识别重复项

7rfyedvj  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(508)

我希望在基于项的分组ID中找到重复项,例如:
希望根据每个id组的重复项派生dup变量。换句话说,如果在另一个id中发现相同的项,则dup为“是”。如果该项仅在同一id内重复,则dup为“否”。
表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  |
+----+--------+-----+

我应该如何构造一个配置单元查询来检测重复项?任何帮助都将不胜感激!

kgsdhlau

kgsdhlau1#

嗯。如果我理解正确,您可以使用聚合和窗口函数:

select id, item,
       (case when count(*) over (partition by item) > 1 then 'yes' else 'no' end) as dups
from t
group by id, item;

相关问题