按列分组并有条件地计算其他 - Mysql

时间:2014-06-06 06:04:26

标签: mysql group-by

我有一个类似以下的计划:      (id int primary key,itemid int,title char(3)) 这是一个MySQL在线购买数据库。 标题栏可以是' Mr'或者' Mrs'。我想看看有多少男人购买了每件商品。 例如下表:

(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,并且应该在其前面放置零。我无法形成一个表格,这个条件成立。但我认为这是可能的。您可能已经注意到,表格没有标准化,性能在这里不会成为一个问题。

提前谢谢你:)

1 个答案:

答案 0 :(得分:1)

itemid上的小组并有条件地总结。 title='Mr'如果为真则返回1,否则返回0,因此如果没有人购买ID为2的项目,则结果为0。

SELECT itemid,SUM(title='Mr') AS number_of_men_who_purchased FROM <table> GROUP BY itemid