我创建了一个表,其中包含“国家/地区”和“客户ID”列,所有行都描述了订单:
SELECT CustomerID, CountryRegionCode
FROM Sales.SalesOrderHeader, Sales.SalesTerritory
WHERE Sales.SalesOrderHeader.TerritoryID = Sales.SalesTerritory.TerritoryID:
我需要计算所有国家(地区)以及美国国家/地区在同一输出表中每个客户的平均订单金额。
平均值是:(世界上的客户数量)/(世界上的订单数量)
(美国客户数量)/(美国订单数量)
输出:
CountryRegionCode | Average orders per customer
World | ?
US | ?
答案 0 :(得分:1)
如果世界包括美国,那么您几乎需要两个查询:
SELECT 'World', COUNT(*) * 1.0 / COUNT(DISTINCT CustomerID)
FROM s.SalesOrderHeader soh JOIN
s.SalesTerritory st
ON soh.TerritoryID = st.TerritoryID
UNION ALL
SELECT 'US', COUNT(*) * 1.0 / COUNT(DISTINCT CustomerID)
FROM s.SalesOrderHeader soh JOIN
s.SalesTerritory st
ON soh.TerritoryID = st.TerritoryID
WHERE st.CountryRegionCode = 'US';
注意:
JOIN
语法。* 1.0
是因为某些数据库进行整数除法,因此产生的数字带有小数位。