[英]Query to find how many customers have made an order
所以我有兩個表,一個是客戶 ,另一個是訂單 。 客戶表具有區域字段。 客戶可以有多個訂單,也可以沒有訂單。
我嘗試了這個:
SELECT customer.region, count(*)
FROM customer
LEFT JOIN order ON order.cid = customer.id
GROUP BY customer.region
ORDER BY count(*) DESC
不幸的是,這並不排除沒有訂單的客戶,並且如果他們有多個訂單,也會多次計數。
你嘗試過類似的東西嗎
SELECT region, count(DISTINCT customer.id)
FROM customer
INNER JOIN order ON order.cid = customer.id
GROUP BY region
本質上, INNER
聯接僅返回已下訂單的客戶,而DISTINCT
僅返回一次customer.id,因此,如果客戶已下達多個訂單,則僅返回一次customer.id。
正如Michael Y正確地說的,如果您想帶回所有區域而不論它們是否有匹配的訂單,那么請用LEFT
替換INNER
如果您還想查看訂單數量為0的區域(大多數訂單位於頂部的區域),請向左加入:
SELECT region, count(DISTINCT customer.id)
FROM customer
LEFT OUTER JOIN order ON order.cid = customer.id
GROUP BY region
ORDER BY 2 desc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.