使用来自两个不相关表的数据执行算术运算

carrying out arithmetic operation using data from two unrelated tables

[Order Details] 和 [Customers] 都是不相关的表。通常我会假设我不能从它们两个中进行查询,因为行数可能不匹配。

但是,在这种情况下,由于 SUM(od.quantity * od.Unitprice) 和 COUNT(distinct c.CustomerID) 都是单个整数,为什么我不能执行如图所示的查询下面?

SELECT SUM(od.quantity * od.Unitprice) / COUNT(distinct c.CustomerID) 
FROM[Order Details] od, Customers c

示例数据:

注意:我在 Microsoft sql 服务器上使用 Northwind 示例数据库

由于您的查询使用单个 FROM 子句和旧式连接格式化的方式,您正在执行 CROSSJOIN,它获取连接到两个表中每一行的每一行的笛卡尔积。

要仅获取您似乎要查找的单行,您需要使用两个子查询:

 SELECT (SELECT SUM(od.quantity * od.Unitprice) FROM [Order Details] od)/(SELECT COUNT(distinct c.CustomerID) FROM Customers c)