Mysql 对SQL groupby语句的结果子集进行算术运算

Mysql 对SQL groupby语句的结果子集进行算术运算,mysql,sql,database,group-by,pivot,Mysql,Sql,Database,Group By,Pivot,我有一个带有性别(男/女)、州名(一个国家的所有州)、学生名和教育程度(博士、硕士)的模式。 我使用下面的查询返回每个州每个教育类别中的男性或女性总数 select sex,education,count(*) from mytable group by education,sex; 如何编写一个查询,返回每个州每种教育的算术比率(男性除以女性) 我试图找到一个查询,它给出了每个州不同教育层次的性别比例(我得到了上面的计数,但我不知道如何进行算术除法)您可以进行条件聚合: select edu

我有一个带有性别(男/女)、州名(一个国家的所有州)、学生名和教育程度(博士、硕士)的模式。 我使用下面的查询返回每个州每个教育类别中的男性或女性总数

select sex,education,count(*) from mytable group by education,sex;
如何编写一个查询,返回每个州每种教育的算术比率(男性除以女性)


我试图找到一个查询,它给出了每个州不同教育层次的性别比例(我得到了上面的计数,但我不知道如何进行算术除法)

您可以进行条件聚合:

select education, sum(sex = 'male') / nullif(sum(sex = 'female'), 0) ratio
from mytable
group by education

被null除数?抱歉,我无意中查看了它,并将其与IFNULL()混淆。当它为null nullif(sum(sex='female'),0)@nbk:look closer时,这也会产生错误。如果给定教育中没有女性,则
sum(sex='female')
生成
0
,而
nullif(sum(sex='female'),0)
将其转换为
null
。因此,比率是一些数字除以
null
,结果产生
null
。没有错误。