【发布时间】:2019-09-30 20:43:20
【问题描述】:
表格:
- 供应商:S_SUPPKEY, S_NAME
- 客户:C_CUSTKEY、C_NAME
- 订单:O_ORDERKEY、O_CUSTKEY
- 订单项:L_ORDERKEY、L_SUPPKEY
在Lineitem 表中,有很多列具有相同的ORDERKEY,但来自不同的SUPPKEY。
一个订单中可以有多个供应商。因此,如果您在一个客户的单个订单中拥有 3 个供应商,则该客户将计入其客户计数中的 3 个供应商中的每一个。
SELECT
S_NAME,
(SELECT COUNT(Customer.C_NAME)
FROM Customer
JOIN Orders ON Customer.C_CUSTKEY = Orders.O_CUSTKEY
JOIN Lineitem ON Orders.O_ORDERKEY = Lineitem.L_ORDERKEY
WHERE Lineitem.L_SUPPKEY = Supplier.S_SUPPKEY
GROUP BY Lineitem.L_SUPPKEY) AS "customer count"
FROM
Supplier
WHERE
"customer count" > 615;
这是我提出的查询,但它似乎在计算重复订单,因为一个订单可以有很多项目。我想不出办法来解决这个问题。
请帮忙
【问题讨论】: