Проверьте, является ли пользователь ботом или нет в MySql

Я делаю анализ данных в базе данных пользователей Instagram, мне нужно найти пользователей, которые являются ботами, проверяя, кому из пользователей понравились все фотографии на сайте, поскольку лайки всех фотографий практически невозможны для реального пользователя.

Формат таблицы

like
-- 
user_id
photo_id
created_at
photos 
--
id
image_url
user_id
created_at
user
--
id
username
created_at

---- Пытался ----

SELECT photos.user_id, count(photos.user_id) AS users_in_photos, count(likes.user_id) AS users_in_likes
FROM photos
INNER JOIN likes
ON photos.user_id = likes.user_id
group by photos.user_id;

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

Случай, который вы тестируете, кажется ОЧЕНЬ специфическим, будет ловить только ботов, которые делают это одно, а также будет ложно помечать пользователя, который на самом деле лайкает все изображения. Но ваш алгоритм проверит это. . . а в чем твой вопрос?

Dronz 19.11.2022 17:33

То, что вы сказали, это сам мой вопрос, чтобы отметить всех пользователей, которым понравились все фотографии. Он не будет случайно помечать пользователя, поскольку пользователь не может лайкать тысячи фотографий. Прошу прощения, если мой вопрос был немного непонятен.

Prakhar Verma 22.11.2022 11:21
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
Доступ AWS Java Lambda к экземпляру AWS RDS MySQL с помощью CDK
В этой статье мы рассмотрим, как включить доступ Java Lambda к экземпляру AWS RDS MySQL.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
2
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Количество всех фотографий можно получить с помощью:

SELECT COUNT(*) FROM photos

Предполагая, что в таблице user_id нет повторяющихся комбинаций photo_id и likes, используйте агрегацию и отфильтруйте ботов в предложении HAVING:

SELECT user_id
FROM likes
GROUP BY user_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM photos);

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

Prakhar Verma 22.11.2022 11:24

Другие вопросы по теме