簡體   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