Join 连接/聚合函数查询

Join 连接/聚合函数查询,join,aggregate,Join,Aggregate,我有以下代码和输出: SELECT CustomerCategoryName, COUNT(a.CustomerID) AS CustomersInThisCategory FROM Sales.Customers AS a RIGHT JOIN Sales.CustomerCategories AS b on a.CustomerCategoryID = b.CustomerCategoryID GROUP BY CustomerCategoryName ORDER BY CustomersI

我有以下代码和输出:

SELECT CustomerCategoryName, COUNT(a.CustomerID) AS CustomersInThisCategory
FROM Sales.Customers AS a
RIGHT JOIN Sales.CustomerCategories AS b on a.CustomerCategoryID = b.CustomerCategoryID
GROUP BY CustomerCategoryName
ORDER BY CustomersInThisCategory DESC 
这将生成以下输出:

当我添加以下计数聚合函数和内部联接时:

SELECT CustomerCategoryName, COUNT(a.CustomerID) AS CustomersInThisCategory, COUNT(c.OrderID) AS Orders
FROM Sales.Customers AS a
RIGHT JOIN Sales.CustomerCategories AS b on a.CustomerCategoryID = b.CustomerCategoryID
INNER JOIN Sales.Orders AS c ON a.CustomerID = c.CustomerID
GROUP BY CustomerCategoryName
ORDER BY CustomersInThisCategory DESC 
输出更改为:

我不知道为什么customersinthicategory列会变为Orders列?我也不确定为什么在第二个查询中删除第一个输出中的结果(值为0),因为仍然存在正确的连接


如果您有任何反馈,我们将不胜感激。

对于您的第一个查询,count(distinct a.customerId)应为您提供类别中唯一的客户ID。 关于第二个问题,右连接在内部连接之前执行。因此,内部联接将拼接未找到匹配项的记录。
希望我的回答能有所帮助。

非常感谢您的反馈:)