исправь ошибку в коде sql для PostgreSQL:
SELECT COUNT(likes.user_id)
FROM likes
JOIN media ON likes.media_id = media.id
JOIN profiles ON likes.user_id = profiles.user_id
WHERE DATEDIFF(CURRENT_TIMESTAMP, profiles.birthday) < 4380;
sql
SELECT profiles.user_id, COUNT(likes.user_id) AS like_count
FROM likes
JOIN media ON likes.media_id = media.id
JOIN profiles ON likes.user_id = profiles.user_id
WHERE DATE_PART('day', CURRENT_TIMESTAMP - profiles.birthday) < 4380
GROUP BY profiles.user_id;
Объяснение исправлений:
1. Для замены функции DATEDIFF на самостоятельно вызываемую функцию DATE_PART необходимо использовать разницу между двумя датами. В данном случае эта разница равна количеству дней между текущей датой (CURRENT_TIMESTAMP) и датой рождения (profiles.birthday).
2. Поскольку необходимо подсчитать количество лайков для каждого пользователя, мы должны добавить описание, каким образом группировать результат. В данном случае мы группируем результаты подсчета по полю profiles.user_id.
3. Псевдонимы таблиц (likes, media, profiles) являются необходимыми для обозначения таблиц в предложении SELECT. При использовании псевдонимов становится понятнее, из каких таблиц получены данные. В данном случае мы использовали псевдонимы likes, media и profiles для таблиц likes, media и profiles соответственно.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет