我有一个如下的方案: (id int 主键,itemid int,标题 char(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)
最重要的是,请注意如果没有人购买过商品,仍然要列出 itemid,并且前面应该放一个零。我无法形成一个表格来满足此条件成立。但我认为这是可能的。正如您可能已经注意到的,表没有标准化,性能在这里不会成为太大的问题。
提前谢谢你:)
最佳答案
对 itemid
进行分组并有条件地求和。 title='Mr'
如果为 true,则返回 1,否则返回 0,因此如果没有男性购买 ID 为 2 的商品,则结果为 0。
SELECT itemid,SUM(title='Mr') AS number_of_men_who_purchased FROM <table> GROUP BY itemid
关于mysql - 按一列分组并有条件地计算另一列 - Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24075235/