加入/聚合函数查询

时间:2018-01-01 17:25:15

标签: 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 CustomersInThisCategory DESC 

这会生成以下输出:

Output

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

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 

输出更改为:

Output2

我不确定为什么CustomersInThisCategory列更改为与Orders列相同?我还不确定为什么在第二个查询中删除第一个输出0值的结果,因为我仍然存在右连接。

任何反馈都会非常感激。

1 个答案:

答案 0 :(得分:1)

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