繁体   English   中英

左外连接+ SUM与分组依据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM