[英]Left outer join + SUM with group by
我有一个名为Purchases的表,该表属于一个Users(即Purchase具有到User的外键)。
Purchases表有一个称为数量的列和一个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
但这只是给我一个用户,而不是全部。 我想念什么?
您可以使用JOIN条件仅加入完成的购买。 并且您应该按users.id
而不是purchases.user_id
分组, users.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.