我喜欢获得某个字段为1或0的行数.
我的表看起来像这样:
ID | name | my_bool
===================
1 | foo | 1
2 | bar | 1
3 | loo | 0
4 | zoo | 1
Run Code Online (Sandbox Code Playgroud)
结果我期待
YES | NO | percentage
======================
3 | 1 | 0.3333
Run Code Online (Sandbox Code Playgroud)
YES是多少行my_bool是真(1)而NO行是假(0)
percentage给出的百分比YES来NO
Gor*_*off 18
在MySQL中,您可以使用条件聚合轻松完成此操作:
select sum(my_bool = 1) as yes, sum(my_bool = 0) as no
from table t;
Run Code Online (Sandbox Code Playgroud)
编辑:
百分比很简单:
select sum(my_bool = 1) as yes, sum(my_bool = 0) as no, avg(my_bool = 0)
from table t;
Run Code Online (Sandbox Code Playgroud)
但是,您的价值表明您正在寻找比率,而不是百分比.为此,你需要注意除以零:
select sum(my_bool = 1) as yes, sum(my_bool = 0) as no,
(case when sum(my_bool = 1) > 0 then sum(my_bool = 0) / sum(my_bool = 1)
end)
from table t;
Run Code Online (Sandbox Code Playgroud)