左外连接+ SUM与组

时间:2015-09-22 15:01:36

标签: mysql sql select join

我有一个名为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

但这只是给我一个用户,而不是所有用户。我错过了什么?

1 个答案:

答案 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