Попытка получить список объектов, упорядоченных по сумме атрибута - PullRequest
1 голос
/ 28 марта 2020

В express API я использую необработанный запрос на postgres дБ. У меня есть модель Актов, и я создал таблицу лидеров, которая ранжирует пользователей (членов группы) по количеству действий, которые они зарегистрировали в течение нескольких дней (: points_horizon). вот этот запрос:

SELECT memberships.users_id
    ,users.username
    ,avatar_url
    ,COUNT(acts.users_id)
FROM memberships
JOIN groups ON memberships.groups_id = groups.id
JOIN users ON memberships.users_id = users.id
LEFT JOIN acts ON acts.users_id = users.id
    AND acts.created_at >= (CURRENT_DATE - 1 - '+ JSON.parse(req.query.group).points_horizon + ')
WHERE memberships.groups_id = ' + req.params.group_id + '
GROUP BY memberships.users_id
    ,users.username
    ,avatar_url
ORDER BY COUNT(acts.id) DESC;

Однако я пытаюсь создать счет, в котором действия имеют разные значения в атрибуте с именем deed_points. это то, что я пробовал до сих пор:

SELECT memberships.users_id
    ,users.username
    ,avatar_url
    ,SUM(acts.deed_points)
FROM memberships
JOIN groups ON memberships.groups_id = groups.id
JOIN users ON memberships.users_id = users.id
LEFT JOIN acts ON acts.users_id = users.id
    AND acts.created_at >= (CURRENT_DATE - 1 - '+ JSON.parse(req.query.group).points_horizon + ')
WHERE memberships.groups_id = ' + req.params.group_id + '
GROUP BY memberships.users_id
    ,users.username
    ,avatar_url
ORDER BY SUM(acts.deed_points) DESC;

Это возвращает нулевые значения вместо суммы deed_points.

в ответ на комментарий, вот мои схемы таблиц:

пользователи:

users table schema группы: groups table schema

членство: memberships schema

действует:

acts schema

Акты: deeds schema

В настоящее время есть только один запись в деяниях db, у которой deeds_id = 1 и deed_points = 10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...