SQL-запрос для предоставления максимально интересного контента пользователю

Цена договорная
11 ноября 2020, 07:01 • 4 отклика • 67 просмотров
Есть структура следующая таблиц.

Для публикаций:

posts - публикации
post_complaints - жалобы на посты
post_follows - посты, за которыми следит пользователь
post_history - история просмотров постов
post_likes - лайки к постам
post_shares - шейринг постов

Для комментариев:
comments - комментарии

Для групп:
groups - сами группы (они же интересы, которые выбирает пользователь при регистрации)
group_user - в каких группах состоит пользователь

Для пользователей:
followers - кто с кем дружит

Взаимосвязи следующие:
1. посты - пользователи
2. комментарий - пост - пользователь
3. фолловинг - пользователи
4. пользователь - группы

Необходимо написать запрос(-ы), который(-ые) будут удовлетворять следующие условия:

1. Исходя из интересов (групп) первые посты выдаются максимально близкие по тематике от других пользователей с сортировкой по ранкам (количество просмотров, лайков, комментариев);
2. Просмотренные посты не должны выдаваться в ленту (исключающая таблица - post_history);
3. Если схожих по интересам постов нет, то выдавать максимально топовые записи (по количеству комментариев, лайков)

Все публикации необходимо искать по временному промежутку.

Предлагайте сроки и стоимость реализации.