У меня возникли проблемы с выбором пары клиентов, которые заказали максимальное количество обычных продуктов.
Пример :
- Клиент1 заказал товары: a, b, c, z
- Клиент2 заказал товары: a, c, d, g
- Товары, заказанные Customer1: g, h, z
Ожидаемый результат: Клиент1 | Клиент2 | 2 (Количество заказанных обычных продуктов)
Что я пробовал:
SELECT c.pid, c.cid, d.cid, count(c.pid)
FROM orders c JOIN orders d join
(SELECT a.cid, b.cid FROM customers a JOIN customers b ON b.cname != a.cname AND b.cname > a.cname) as subq
ON c.cid = a.cid and d.cid = b.cid
AND c.pid = d.pid group by c.pid;
Это возвращает каждую пару имен:
select a.cname client_1, b.cname client_2
from customers a join customers b on b.cname != a.cname and b.cname > a.cname;
Как я могу получить максимальное количество общих pid для пары cids?
Таблицы:
customers (cid, cname, residence)
orders (pid, cid, odate, quantity)
products (pid, pname, price, origin)
where exists (select cid, max(cnt) m_cnt from (select cid, pid, count(*) as cnt from order group by cid, pid) as a) group by cid having max(cnt) = outer_query.cnt)
13.10.2017