描述:
找出顾客订单中所花运费比他所下订单平均运费的两倍都还贵的订单号,列出cOrderNo。运费属性名为mShippingCost,顾客号属性为cCustomerID。
代码示例:
SELECT o.cOrderNo
FROM orders o
WHERE o.mShippingCost > (SELECT AVG(o2.mShippingCost) * 2FROM orders o2WHERE o2.cCustomerID = o.cCustomerID
);
解析:
假设 orders
表的数据如下:
cOrderNo | cCustomerID | mShippingCost |
---|---|---|
1001 | C001 | 50 |
1002 | C001 | 20 |
1003 | C002 | 100 |
1004 | C002 | 60 |
1005 | C003 | 80 |
我们举例分析代码执行过程:
代码执行表oders o1的第一行,
子查询:在oeders o2(实为同一张表)中查找cCustomerID=C001的顾客的所有信息(o2.cCustomerID = o.cCustomerID) ,计算他的所有订单的运费之和并求平均值(*2),最后返回结果。
接着以相同方式执行下面几行列表。