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

时间:2017-08-23 13:13:12

标签: sql sql-server northwind

[订单明细]和[客户]都是不相关的表格。通常情况下,我认为我无法从两个查询中进行查询,因为行数可能不匹配。

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

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

示例数据:

enter image description here

注意:我正在使用microsoft sql server上的Northwind示例数据库

1 个答案:

答案 0 :(得分:1)

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

要获得您正在寻找的单行,您需要使用两个子查询:

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