按一列分组并有条件地计算另一列-Mysql

按一列分组并有条件地计算另一列-Mysql,mysql,group-by,Mysql,Group By,我的计划如下: (id int主键,itemid int,标题字符(3)) 这是MySQL中的在线购买数据库。 标题栏可以是“先生”或“女士”。我想看看有多少人买了每件商品。 例如,下表: (id, itemid, title) (1 , 1 , 'Mr' ) (2 , 1 , 'Mr' ) (3 , 2 , 'Mrs') (4 , 2 , 'Mrs') (5 , 2 , 'Mrs') (itemid, number_of_men_who_purchas

我的计划如下: (id int主键,itemid int,标题字符(3)) 这是MySQL中的在线购买数据库。 标题栏可以是“先生”或“女士”。我想看看有多少人买了每件商品。 例如,下表:

(id, itemid, title)
(1 , 1     , 'Mr' )
(2 , 1     , 'Mr' )
(3 , 2     , 'Mrs')
(4 , 2     , 'Mrs')
(5 , 2     , 'Mrs')
(itemid, number_of_men_who_purchased)
(1, 2)
(2, 0)
结果应如下表所示:

(id, itemid, title)
(1 , 1     , 'Mr' )
(2 , 1     , 'Mr' )
(3 , 2     , 'Mrs')
(4 , 2     , 'Mrs')
(5 , 2     , 'Mrs')
(itemid, number_of_men_who_purchased)
(1, 2)
(2, 0)
最重要的是,请注意,如果没有男性购买物品,仍然会列出一个itemid,并在其前面加上一个零。我无法形成一个表,其中包含此条件。但我认为这是可能的。正如您可能已经注意到的,表并没有规范化,性能在这里也不是什么大问题


提前感谢:)

itemid
上分组并有条件地总结
title='Mr'
如果为真,则返回1,否则返回0,因此如果没有男性购买ID为2的商品,则结果为0

SELECT itemid,SUM(title='Mr') AS number_of_men_who_purchased FROM <table> GROUP BY itemid
选择itemid,SUM(title='Mr')作为按itemid从集团购买的人员数量