【问题标题】:Snowflake: SQL Query to identify all the different users with the same ID from the same or multiple tablesSnowflake:SQL Query 用于从同一个或多个表中识别具有相同 ID 的所有不同用户
【发布时间】:2024-04-30 00:35:02
【问题描述】:

有两个表同时包含 ID 和用户名。寻找一个雪花 SQL 查询,该查询会导致从同一个表或两个表中识别不同用户共享的 ID。

表 1

ID User
1001 A
1002 B
1003 C
1002 D
1005 E

表 2

ID User
1006 H
1005 E
1003 G
1002 F
1001 A

预期结果: 1002 - [B,D,F] -> ID 1002 被两个表中的 3 个不同用户使用 1003 - [C,G] -> ID 1003 被两个表中的 2 个不同用户使用

注意: 1001 不包括在内,因为它是两个表中的同一个用户

【问题讨论】:

    标签: sql snowflake-cloud-data-platform snowflake-sql


    【解决方案1】:

    使用QUALIFY

    SELECT *
    FROM (SELECT Id, User
         FROM Table1
         UNION
         SELECT Id, User
         FROM Table2) sub
    QUALIFY COUNT(User) OVER(PARTITION BY Id) > 1
    

    【讨论】:

    • 我宁愿只使用UNION 而不是UNION ALL,因为它会自动删除重复的记录。
    • @AnkitBajpai 好主意,让 UNION 删除重复项。
    【解决方案2】:

    用于识别同一表或两个表中不同用户共享的 ID 的查询。

    对我来说这听起来像是聚合:

    select id
    from ((select id, user from table1) union all
          (select id, user from table2)
         ) t12
    group by id
    having min(user) <> max(user);
    

    【讨论】:

      最近更新 更多