Найти список всех поставщиков с заказами от более чем 615 разных клиентов. Должен вернуть имя поставщика и количество клиентов - PullRequest
0 голосов
/ 30 сентября 2019

Таблицы:

  • Поставщик: S_SUPPKEY, S_NAME
  • Заказчик: C_CUSTKEY, C_NAME
  • Заказы: O_ORDERKEY, O_CUSTKEY
  • Lineitem: 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;

Это запрос, который я сформулировал, но онПохоже, что он учитывает повторяющиеся заказы, поскольку в одном заказе может быть много предметов. Я не могу найти способ это исправить.

Пожалуйста, помогите

1 Ответ

0 голосов
/ 30 сентября 2019

Использование COUNT(DISTINCT):

SELECT s.s_suppkey, s.s_name
FROM Orders o JOIN
     LineItem li
     ON li.L_ORDERKEY = o.O_ORDERKEY JOIn
     Supplier s
     ON li.L_SUPPKEY = s.S_SUPPKEY
GROUP BY s.s_suppkey, s.s_name
HAVING COUNT(DISTINCT o.O_CUSTKEY) > 615;

Обратите внимание, что вам не нужен клиентский стол.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...