我有一张桌子,在上面我通过陈述来表演一个小组。表中的一个列可以包含5个不同的单词中的一个(本质上是枚举类型)。是否有一种方法可以使用聚合来获取每个枚举的出现情况,但在新列中显示每个计数?
例如,给定表:
+---------+
|id | enum|
+---------+
| 1 | A |
| 1 | B |
| 1 | C |
| 1 | A |
+---------+在id分组之后,我想得到这样的信息:
+------------+---------+---------+
|id | a_count| b_count | c_count |
+------------+---------+---------+
| 1 | 2 | 1 | 1 |
+--------------------------------+发布于 2016-04-08 18:13:47
当然,将3 SUMs的所需值转换为1,其他值转换为0。
select
id,
sum(case when enum = 'A' then 1 else 0 end) as a_count,
sum(case when enum = 'B' then 1 else 0 end) as b_count,
sum(case when enum = 'C' then 1 else 0 end) as c_count
from
table
group by
id
;https://dba.stackexchange.com/questions/134801
复制相似问题