SQL для поиска уникальных значений в нескольких группах - PullRequest
0 голосов
/ 26 апреля 2018

Застрял в проблеме SQL для приложений из блока данных, где я пытаюсь определить, какие уникальные значения в одном столбце находятся в двух или более группах. Например:

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

Результаты, которые я ищу, скажут мне, что уникальное значение 123 было найдено в обеих группах A и B, а 345 было найдено в группах B, C и A. Что-то вроде ...

123   A
123   B
345   B
345   C
345   A

или есть способ получше?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Это должно работать:

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
0 голосов
/ 26 апреля 2018

Вы можете найти 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;
...