我有一个名为Purchases的表,属于一个Users(即Purchase有一个用户的外键)。
Purchases表有一个名为quantity的列和一个state_id列,两者都是整数。
我希望能够通过已完成的购买(state_id = 10)订购用户,其中数量的总和大于>即,所有已完成购买的用户> 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
但这只是给我一个用户,而不是所有用户。我错过了什么?
答案 0 :(得分:0)
您只能使用JOIN条件加入已完成的购买。并且您应该尽快将用户放在一个没有购买的表中,users.id
而不是purchases.user_id
分组:
SELECT users.id as user_id,
SUM(purchases.quantity) as quantity
FROM users
LEFT JOIN purchases ON (users.id=purchases.user_id)
AND (purchases.state_id = 10)
GROUP BY users.id
ORDER BY quantity DESC