【问题标题】:SQL : Identify item duplicates across groupsSQL:跨组识别项目重复项
【发布时间】:2020-12-20 02:01:35
【问题描述】:

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

Dup 变量定义了一个项目是否在其他 ID 组中重新出现。换句话说,如果在另一个 ID 中找到相同的项目,则 Dup 为“是”。如果 Item 只在同一个 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  |
+----+--------+-----+

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

【问题讨论】:

    标签: sql hive hql hiveql


    【解决方案1】:

    你可以像这样使用窗口函数:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 2021-01-03
      • 2020-04-06
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      相关资源
      最近更新 更多