В моей базе данных есть таблица «Клиенты», которая включает следующее:
CustomerID | SupplierID
Каждый клиент добавляется в базу данных вместе с поставщиком, что означает, что конкретный клиент может быть указан более одного раза.
У меня есть конкретный клиент, у которого CustomerID = X
Я пытаюсь написать запрос на SQL, который возвращает таблицу клиентов, которые удовлетворяют уравнению: количество взаимных поставщиков между пользователем и X> 80% от числа поставщиков клиента X.
Мне удалось получить таблицу:
CustomerID1 | CustomerID2 | Num of Mutual Suppliers
где CustomerID1 = X во всех строках, но я не могу указать количество поставщиков, которых имеет клиент X, чтобы выбрать только тех, кто удовлетворяет условию.
select user1
, user2
, num_in_common
, COUNT(*)
from (select f1.CustomerID as user1, f2.CustomerID as user2, count(*) as num_in_common
from Customers f1 inner join
Customers f2
on f1.SupplierID = f2.SupplierID
group by f1.CustomerID, f2.CustomerID)
where user1 = X;
Я ожидал получить следующую таблицу:
CustomerID1 | CustomerID2 | Num of Mutual Suppliers | Num of X's Suppliers
но я получил ошибку «Вы пытались выполнить запрос, который не включает указанное выражение« user1 »как часть агрегатной функции».