基本上,正如问题所述,我正在寻找基于唯一值获取计数的最简单,最直接的方法。
这是我的数据集:
id | item_id | user_id
1 | 10 | 123
2 | 10 | 123
3 | 10 | 123
4 | 11 | 123
5 | 12 | 123
6 | 10 | 456
7 | 10 | 789
8 | 12 | 456
理想情况下,当我运行查询时,我应该得到以下内容:
count | user_id
3 | 123
2 | 456
1 | 789
尽管用户123的名字中有5个项目,但实际上只购买了3个独特的项目。这真的很直接,我只是完全错过了吗?这是我目前的情况:
SELECT count(user_id) AS count, item_id, user_id
FROM table
GROUP BY item_id, user_id
HAVING count > 1
ORDER BY count DESC
这与我想要的相反:
count | user_id
5 | 123
2 | 456
1 | 789
提前致谢!如果已经回答了这个问题,请指出我的方向。
答案 0 :(得分:1)
您可以计算不同的项ID,然后按用户ID进行分组:
SELECT
COUNT(DISTINCT item_id) AS count,
user_id
FROM
event_assigned
GROUP BY
user_id
ORDER BY
count DESC