簡體   English   中英

查詢以查找已下訂單的客戶數量

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM