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