2017-02-18 8 views
1

私はこのクエリを使用して女性の従業員の割合を調べています。しかし、どういうわけか、以下のようなクエリでその操作を組み合わせると、常に1.0が返されます。SQLカウントのクエリは常に1を返します

ただし、別にクエリして分割すると適切です。私はここでいくつかの構文を混乱させていると思う。

私は間違っていますか?

employeesおよびcitizensは2つのテーブルです。

SELECT (count(e.name)/count(c.name)) 
from citizens as c, employees as e 
where c.gender=false and e.gender=false 
+1

パーセントは浮動小数点数です。カウント結果の1つを浮動小数点にキャストするか、除算を行う前に1.0を1つ掛けます。 –

答えて

3

2つのテーブルの行の間にクロス積を作成し、結果のクロス積の行数を数えるだけです。カウントはintegers.Youあなたはパーセンテージを得ることができるようにフロートにそれらをキャストする必要が返すので

SELECT (SELECT COUNT(*) FROM employees WHERE gender = false)/ 
     (SELECT COUNT(*) FROM citizens WHERE gender = false) 
+0

入手しました。自分のカウントではなく名前を選択したときには、ほぼすべてのマッピングに対応していたので、クロス製品でなければならないと思いました! –

0

あなたは1を取得している:あなたは、各カウントを計算するために、別のクエリを使用する必要があります。また、分子をキャストするだけで十分です。この場合、floatで商が返されます。

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; 
+1

答えを出すときは、[あなたの答えが何であるかについての説明](http://stackoverflow.com/help/how-to-answer)を挙げることが望ましいです。 –

関連する問題