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