У меня есть таблица под названием «Покупки», принадлежащая Пользователям (то есть покупка имеет внешний ключ для пользователя).Левое внешнее соединение + SUM с группой по
В таблице «Покупки» есть столбец с именем «количество» и столбец «state_id», оба являются целыми числами.
Я хочу, чтобы иметь возможность порядка пользователей, их законченной покупка (state_id = 10), где сумма их величин больше, чем> 100. То есть, все пользователи, имеющие в общей сложности завершенных закупок> 100, должен появиться первым, а остальное сразу после.
Это то, что я пробовал:
SELECT users.id as user_id,
SUM(CASE WHEN purchases.state_id = 5
THEN purchases.quantity
ELSE 0
END) as quantity
FROM users
LEFT OUTER JOIN purchases ON purchases.user_id = users.id
GROUP BY purchases.user_id
Но это только возвращение мне один пользователь, не все из них. Что мне не хватает?
следующий раз попытаться обеспечить [** SqlFiddle **] (http://sqlfiddle.com/#! 15/5368b/6), чтобы мы могли лучше понять проблему и дать вам ответ намного быстрее. Или, по крайней мере, некоторые образцы данных –
О, хороший звонок. Я сделаю это! –
Я бы группировал 'users.id', а не' purchase.user_id', поскольку внешнее объединение приведет к тому, что последнее будет 'NULL', если в таблице' purchase' нет соответствующих записей. – eggyal