我无法选择订购了最多常见产品的客户。
示例:
- 客户 1 订购的产品:a、b、c、z
- 客户2订购的产品:a、c、d、g
- 客户1订购的产品:g、h、z
预期结果:Customer1 |客户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;
如何获取几个 cid 的最大公共(public) pid?
表格:
customers (cid, cname, residence)
orders (pid, cid, odate, quantity)
products (pid, pname, price, origin)
最佳答案
可能不适用于所有 RDBMS。您使用的是哪一款?
select o1.cid, o2.cid, o1.pid, o1.cnt, o2.cnt
from (
select cid, pid, count(*) as cnt
, ROW_NUMBER() OVER(PARTITION BY cid, pid ORDER BY count(*) DESC) AS rn
from order
group by cid, pid
) as o1
join (
select cid, pid, count(*) as cnt
, ROW_NUMBER() OVER(PARTITION BY cid, pid ORDER BY count(*) DESC) AS rn
from order
group by cid, pid
) as o2
on o1.cid <> o2.cid
and o1.pid = o2.pid
where o1.rn = 1
and o2.rn = 1
关于mysql - 订购了最多共同产品的夫妇 - SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46731218/