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

标签 mysql group-by

我有一个如下的方案: (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/

相关文章:

Python:插入前更新/删除

java - Spring JDBC 中区分唯一键约束异常和主键约束异常

javascript - 如何将数据作为数组值插入 MySQL?

mysql - 如何在单个字段或列中连接多个值? (MySQL)

python - 迭代分组数据框中的组

sql - 如何按两列分组以仅显示一行?

c# - Linq 按 Sum 分组,但如果 sum 为 null,则返回 0

带有两个 ORDER BY 子句的 mySQL UNION 子句

python - Pandas GroupBy sum 连接数字而不是对它们求和

c++ - VS2010 上的 MySQL Connector C 链接问题