我有一张这样的表:
CREATE TEMP TABLE users_category
(
user_id int,
category_id int
);
insert into users_category (user_id, category_id)
values (100, 1), (100, 2), (103, 4), (105, 4), (106, 2), (107, 1)
然后我试图计算用户使用类别的数量:
select category_id,count(*)
from users_category
group by category_id
回应是:
category_id count
4 2
1 2
2 2
如果用户存在于多个类别中,如何添加逻辑,请在其他类别中计算。
例如,用户100存在于类别1和2中,并且我不会为这两个类别计算它。我想添加新的类别ex。 99并且必须在那里添加用户。
回应必须如下:
category_id count
4 2
1 1
2 1
99 1 (user who was in both category)
怎么做?
答案 0 :(得分:2)
您需要先在用户级别聚合,然后在类别级别聚合:
select category_id, count(*)
from (select user_id,
(case when min(category_id) = max(category_id) then min(category_id)
else 99
end) as category_id
from users_category uc
group by user_id
) uc
group by category_id;