現在のクエリでは、1回は列condition_idを使用し、もう1回は列person_idを使用して、diseaseテーブルの行数をカウントします。ただし、行数は同じです。これが、結果として1になる理由です。
これらの列のさまざまな値の数を見つける必要があると思います。これは、countdistinctを使用して実行できます:
select (COUNT(DISTINCT condition_id)/COUNT(DISTINCT person_id)) as prevalence
from disease
where condition_id=12345;