【问题标题】:SQL for finding unique values in multiply groups用于在多个组中查找唯一值的 SQL
【发布时间】:2018-04-26 14:51:27
【问题描述】:

遇到了一个数据块应用程序的 SQL 问题,我试图确定一列中的哪些唯一值在两个或多个组中。例如:

COL_A  COL_B
 123     A
 234     B
 345     B
 123     B
 456     A
 567     C
 345     C
 345     A

我寻求的结果会告诉我,在 A 组和 B 组中都找到了唯一值 123,在 B、C 和 A 组中都找到了 345。类似...

123   A
123   B
345   B
345   C
345   A

或者有没有更好的方法?

【问题讨论】:

    标签: sql sparkr


    【解决方案1】:

    这应该可行:

    SELECT a.* FROM myTable a
    JOIN(
        SELECT COL_A, COUNT(COL_B)
        FROM myTable
        GROUP BY COL_A
        HAVING COUNT(COL_B) > 1
    ) b on a.COL_A = b.COL_A
    ORDER BY COL_A, COL_B
    

    【讨论】:

    • 除了小写的 a 和 b 之外,所有的都有意义。 b 在 a.COL_A = b.COL_A 上?
    • 这些只是我给表格的别名。
    【解决方案2】:

    您可以通过以下方式找到col_a 和多个col_b

    select col_a
    from t
    group by col_a
    having min(col_b) <> max(col_b);
    

    然后您可以将其合并到查询中以获取原始数据:

    select t.*
    from t join
         (select col_a
          from t
          group by col_a
          having min(col_b) <> max(col_b)
         ) tt
         on t.col_a = tt.col_a;
    

    【讨论】:

    • 我看到一个错字。我假设你的意思是 max(col_b);
    • @isaace 。 . .谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多