Надо сделать вывод топа юзеров по количеству у них денег. Имеется таблица user и таблица money(user_id, value). Проблема в том, что value может быть как положительным, так и отрицательным, а для составления топа учитываются только положительные значения. Вот как мне выбрать, скажем, 5 юзеров с максимальным количеством денег?
Мне надо получить сколько у юзера было бы максимально денег, если бы он ничего не тратил.
Значит надо взять текущий баланс пользователя и приплюсовать все его траты. Либо просто сложить все доходы пользователя не глядя на текущий баланс. Если ни доходы, но траты нигде не зафиксированы, то получить желаемое значение невозможно.
select
users.id,
users.name,
sum(money.value) as user_value
from users
join money on users.id = money.user_id
where value > 0
group by users.id, users.name
order by user_value desc;
101-s, в комментариях выяснилось, что в таблице - не состояние счета, а транзакции. Так что не *, а user_id, SUM(value) as total, скажем. И в WHERE должно быть value, money - это имя таблицы.