Найти другие строки, наиболее тесно связанные со столбцом - PullRequest
0 голосов
/ 16 ноября 2018

Извините, я не уверен, как сформулировать этот вопрос.

У меня есть таблица с двумя столбцами: tag и activity_id, используемая для отслеживания отношения многие ко многиммежду действиями и тегами.(На самом деле, тег на самом деле является числовым tag_id, но я упрощаю это для цели вопроса - я могу выяснить СОЕДИНЕНИЕ позже.)

Пример данных:

tag, activity_id
"Ideation",52698
"Adult",52698
"Trans man",52698
"USA - Northwest",52698
"Transfeminine",52699
"Ideation",52699
"Adult",52702
"Trans man",52702
"USA - Northwest",52702
"Ideation",52702
"PTSD",52702
"Religious abuse / trauma",52702
"Adult",52709
"Ideation",52709

То, что я хочу найти, - это то, какие теги появляются чаще всего с другими.Например, в приведенном выше тексте «Идея» и «Взрослый» появляются с одним и тем же Activity_id несколько раз.Идея и Trans Man также появляются вместе.Мне бы хотелось, чтобы запрос показал, какие теги объединены в кластеры на основе activity_id, в идеале с некоторым рангом в зависимости от того, сколько раз они появляются вместе.

Спасибо за любую помощь - прокомментируйте, если у меня естьне объяснил это достаточно ясно!

1 Ответ

0 голосов
/ 16 ноября 2018

Я думаю, что вы хотите самостоятельного объединения и агрегации:

select s1.tag, s2.tag, count(*)
from sample s1 join
     sample s2
     on s1.activity_id = s2.activity_id and s1.tag < s2.tag
group by s1.tag, s2.tag
order by count(*) desc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...