mysql return 人具有相似的购买和 desc 订单(按相似商品的数量计算)
mysql return people with similar purchase and desc order by count of similar items
客户table
id
name
1
a
2
b
3
c
4
d
购买table
product_id
customer_id
x
1
y
1
x
4
y
4
x
3
z
2
客户table有客户数据,采购table有订单数据。
现在开始质疑,我想要购买类似商品的客户 ID 按类似商品的数量订购
例如:
如果我想要像客户 'a' 这样购买过类似商品的客户
查询应该 return
customer_id
similar items count
4
2
3
1
'a' 买了 x,y
d' 买了 x,y,
c' 买了 x
所以 d 和 c 应该return按相似项目计数 (desc) 排序
我不擅长更大的 sql 查询,所以我需要问这个。
提前致谢
SELECT t1.customer_id, t2.customer_id, COUNT(*) cnt
FROM purchase t1
JOIN purchase t2 ON t1.product_id = t2.product_id
AND t1.customer_id < t2.customer_id
GROUP BY t1.customer_id, t2.customer_id;
将 return 客户配对并为他们提供相似产品的数量。
客户table
id | name |
---|---|
1 | a |
2 | b |
3 | c |
4 | d |
购买table
product_id | customer_id |
---|---|
x | 1 |
y | 1 |
x | 4 |
y | 4 |
x | 3 |
z | 2 |
客户table有客户数据,采购table有订单数据。 现在开始质疑,我想要购买类似商品的客户 ID 按类似商品的数量订购 例如: 如果我想要像客户 'a' 这样购买过类似商品的客户 查询应该 return
customer_id | similar items count |
---|---|
4 | 2 |
3 | 1 |
'a' 买了 x,y d' 买了 x,y, c' 买了 x
所以 d 和 c 应该return按相似项目计数 (desc) 排序
我不擅长更大的 sql 查询,所以我需要问这个。
提前致谢
SELECT t1.customer_id, t2.customer_id, COUNT(*) cnt
FROM purchase t1
JOIN purchase t2 ON t1.product_id = t2.product_id
AND t1.customer_id < t2.customer_id
GROUP BY t1.customer_id, t2.customer_id;
将 return 客户配对并为他们提供相似产品的数量。