如何编写sql查询以按类型选择和分组以及每种类型的计数?

O C*_*nor 1 mysql sql select group-by count

下面是我的数据库表。

id     name    type   
1      a       1
2      a       1
3      a       1
4      a       0
5      a       0
6      b       1
7      b       1
8      b       0
9      b       0
10     b       0
11     c       1
12     c       1
13     c       0
Run Code Online (Sandbox Code Playgroud)

我想按类型选择和分组,并按类型计数。如何编写sql查询得到如下结果?

name    count_type_0    count_type_1
a       2               3
b       3               2
c       1               2
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

只需使用条件聚合:

select name, sum(type = 0) as count_0, sum(type = 1) as count_1
from t
group by name;
Run Code Online (Sandbox Code Playgroud)

这使用了 MySQL 功能,该功能将布尔值视为数字上下文中的数字,0 表示假,1 表示真。因此,将这些值相加计算表达式为真的次数。