SQL - Как я могу посчитать и перечислить элементы с одинаковыми значениями? - PullRequest
0 голосов
/ 02 марта 2019

У меня есть эта таблица (имя таблицы CH);

╔══════╦══════╦══════════╦══════════╗
║ ID_A ║ ID_B ║Category_A║Category_B║
╠══════╬══════╬══════════╬══════════╣
║   1  ║   a  ║    1     ║     1    ║
║   1  ║   b  ║    1     ║     2    ║
║   1  ║   c  ║    1     ║     3    ║
║   1  ║   a  ║    2     ║     1    ║
║   1  ║   b  ║    2     ║     1    ║
║   1  ║   c  ║    2     ║     1    ║
║   1  ║   a  ║    2     ║     2    ║
║   1  ║   b  ║    2     ║     2    ║
║   1  ║   b  ║    3     ║     1    ║
║   1  ║   c  ║    3     ║     1    ║
║   2  ║   a  ║    1     ║     1    ║
║   2  ║   b  ║    1     ║     1    ║
║   2  ║   a  ║    2     ║     1    ║
║   2  ║   c  ║    2     ║     1    ║
║   2  ║   b  ║    3     ║     1    ║
║   2  ║   c  ║    3     ║     1    ║
╚══════╩══════╩══════════╩══════════╝

ID (ID_A, ID_B), CAT (CAT_A, CAT_B)

ID (1, a) и ID (1, b) имеют одинаковые категории, CAT (2,1) и CAT (2,2).

Итак, cnt_CAT = 2 для идентификатора (1, a) и идентификатора (1, b)

Какую таблицу я хочу получить:

╔══════╦══════╦═════════╦═════════════╗
║ ID_A ║ Pair ║ cnt_CAT ║   lst_CAT   ║
╠══════╬══════╬═════════╬═════════════╣
║   1  ║  a,b ║    2    ║{(2,1),(2,2)}║
║   1  ║  a,c ║    1    ║   {(2,1)}   ║
║   1  ║  b,c ║    2    ║{(2,1),(3,1)}║
║   2  ║  a,b ║    1    ║   {(1,1)}   ║
║   2  ║  a,c ║    1    ║   {(2,1)}   ║
║   2  ║  b,c ║    1    ║   {(3,1)}   ║
╚══════╩══════╩═════════╩═════════════╝

Кажется, она заполнена.Если с SQL это слишком сложно, я могу игнорировать столбец lst_cat .

Есть ли способ получить значения Pair и cnt_CAT с помощью SQL ??

...