我在MySQL工作台8.0上工作,我想找到每个用户ID的每个产品的买家类型的数量.例如,对于椅子,如果USER_ID1、USER_ID2和USER_ID3只购买了一次,我想创建一个列(买家类型)"BoughtOnce"并添加购买的椅子数量;3个椅子(每个用户购买一次).
与原始数据类似的样本数据如下所示.
user_id | Product |
---|---|
1 | chair |
1 | bed |
2 | bed |
1 | chair |
3 | bed |
2 | sofa |
3 | sofa |
3 | shelf |
2 | chair |
我希望得到以下结果:
Product | BoughtOnce | BoughtTwice |
---|---|---|
chair | 1 | 2 |
bed | 3 | Null |
sofa | 2 | Null |
shelf | 1 | Null |
例如,user_id 1购买了2把椅子,而user_id 2购买了1把椅子.
我想使用下面的表达式,但意识到我不能聚合窗口函数.
CASE WHEN COUNT(DISTINCT PRODCUT)OVER(PARTITION BY USER_ID)=1则...
有人能帮我这个忙吗?如果你能帮忙,我将不胜感激!
如果你也提出另一种方法,那将是有帮助的.
编辑:我try 了以下方法:
SELECT Product,
CASE WHEN COUNT(DISTINCT Product) OVER (PARTITION BY user_id) = 1 THEN COUNT(DISTINCT Product) END AS "BoughtOnce",
CASE WHEN COUNT(DISTINCT Product) OVER (PARTITION BY user_id) = 2 THEN COUNT(DISTINCT Product) END AS "BoughtTwice"
From myData;