SQL,计算group by分组后组内不同值的数量

SQL,group by分组后分别计算组内不同值的数量

如现有一张购物表shopping

name cargo
小明
小明 橡皮
小明
小明 橡皮
小明 橡皮
小红
小红 橡皮
小红 橡皮

现要求小明和小红分别买了多少笔和多少橡皮,形成以下格式

姓名 橡皮
小明 2 3
小红 1 2
select name as 姓名,
sum( case when cargo='笔' then 1 else 0 end ) as 笔,
sum( case when cargo='橡皮' then 1 else 0 end ) as 橡皮
from shopping group by name;

注:这里不能用count计算行数,count只是别分组后每组所有行的数目

你可能感兴趣的:(SQL,计算group by分组后组内不同值的数量)