SQL-запрос для сравнения пользователей по лайкам / антипатиям - PullRequest
0 голосов
/ 28 июня 2018

Я ищу некоторые термины или указания по этому вопросу, а не кого-то, кто бы написал запрос. Но я понятия не имею, какой вопрос задавать или какой жаргон исследовать.

Итак, у меня есть таблица, назовем ее reactions, и она содержит три столбца: users, post_id и response:

user | post_id | reaction
1    | 23      | 1
1    | 24      | 0
2    | 15      | 0
3    | 16      | 0
4    | 17      | 1
3    | 14      | 0
2    | 23      | 1
2    | 12      | 1
1    | 17      | 0

Как бы я выбрал пользователя, который имеет наибольшую реакцию на сообщения, общие с данным пользователем?

Например, если бы пользователь № 5 знал реакцию «1» на публикацию «12» и реакцию «0» на публикацию «15», то я бы нашел его сравнимым с пользователем № 2, который отреагировал таким же образом на эти две точки данных.

Конечно, это будет усложняться, поскольку все больше пользователей будут реагировать на большее количество постов, и мне придется отсортировать их по тому, насколько хорошо реагируют реакции пользователей.

В любом случае, большое спасибо заранее за чтение, и любая помощь в том, где можно прочитать о вещах, была бы очень признательна!

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете просто посчитать количество общих реакций, используя самостоятельное соединение

select r.user, count(*)
from reactions r join
     reactions r2
     on r.post_id = r2.post_id and r.reaction = r2.reaction
where r2.user = @user
group by r.user
order by count(*) desc;
...