我遇到了以下问题--用这种 struct 做桌子.
user_id | permission |
---|---|
25 | Denied |
25 | Permitted |
139 | Denied |
139 | Limited |
139 | Limited |
139 | Limited |
需要根据分类标准(3个类别)将记录分组为one line个"user_id",计算不同的"权限"状态.它应该如下所示:
user_id | denied_count | limited_count | permitted_count |
---|---|---|---|
25 | 1 | 0 | 1 |
139 | 1 | 3 | 0 |
我try 使用GROUP BY和CASE对以下脚本进行分组:
select user_id,
permission,
case when permission = 'PERMITTED' then count("permission") else 0 end as permitted_count,
case when permission = 'LIMITED' then count("permission") else 0 end as limited_count,
case when permission = 'DENIED' then count("permission") else 0 end as denied_count
from table
group by 1,2
order by user_id
但用这种方式记录下来:
user_id | denied_count | limited_count | permitted_count |
---|---|---|---|
25 | 1 | 0 | 0 |
25 | 0 | 0 | 1 |
139 | 1 | 0 | 0 |
139 | 0 | 3 | 0 |
请告诉我我哪里错了.