我使用此查询来查找女性员工的百分比。但不知何故,当我将该操作组合在一个查询中时,如下所示,它总是返回1.0。
但是,如果我单独查询并将其分开,那么它是正确的。我想我在这里弄乱了一些语法。
我做错了什么?
employees
和citizens
是两个表格。
SELECT (count(e.name)/count(c.name))
from citizens as c, employees as e
where c.gender=false and e.gender=false
答案 0 :(得分:3)
您只是在两个表中的行之间创建交叉产品,然后计算生成的交叉产品中的行数。您需要使用单独的查询来计算每个计数:
SELECT (SELECT COUNT(*) FROM employees WHERE gender = false)/
(SELECT COUNT(*) FROM citizens WHERE gender = false)
答案 1 :(得分:0)
你得到1因为count返回整数。你需要将它们转换为浮点数,这样你才能获得百分比。此外,在这种情况下,只输出分子就足够了。这将返回浮点数中的商。
SELECT cast(count(e.name)as float)/count(c.name)
from citizens as c, employees as e
where c.gender=false and e.gender=false;