如何根据购买的商品数量找到unique_ids的数量

问题描述 投票:0回答:1

我在另一个线程上问过类似的问题。

如何找到每个user_id每个产品的买家类型数量?

我正在使用 MySQL Workbench 8.0。在这种情况下,我想找到购买产品一次、两次、多次、两次以上等的唯一 user_ids 的数量

与原来相似的样本数据如下所示

user_id 产品
2 椅子
1 椅子
3 椅子
4 椅子
1 椅子
2 椅子
4 桌子
3 桌子
4 桌子
3 桌子
1 桌子
2 桌子
5 桌子

我要找的数字是unique_ids的个数。我想找到以下结果:

产品 一次购买 买了两次
椅子 4 2
桌子 5 2

例如,4 个独特的人只买了一把椅子,2 个独特的人买了两把椅子。同样,5 个独特的人只买了一张桌子,2 个独特的人买了两张桌子。

从另一个线程,我可以给出按 user_id 和产品分区的行号。

SELECT 
user_id, Product, ROw_NUMBER() OVER(PARTITION BY `user_id`, Product) rn
FROM myData;

结果:

user_id 产品 rn
1 椅子 1
1 椅子 2
1 桌子 3
2 椅子 1
2 椅子 2
2 桌子 3
3 椅子 1
3 桌子 2
3 桌子 3
4 椅子 1
4 桌子 2
4 桌子 3
5 桌子 1

如何根据购买的商品数量查找 unique_ids 的数量?

如果您也有其他方法,请告诉我。

感谢您的帮助。

mysql sql pivot aggregate-functions
1个回答
0
投票

您可以通过两个级别的聚合来做到这一点:首先按用户/产品,然后按产品。

select product,
    sum(cnt = 1) bought_once,
    sum(cnt = 2) bought_twice
from (
    select product, count(*) cnt
    from mydata 
    group by product, user_id
) d
group by product 
© www.soinside.com 2019 - 2024. All rights reserved.