Nella query corrente si contano il numero di righe nella tabella delle malattie, una volta utilizzando la colonna condition_id, una volta utilizzando la colonna person_id. Ma il numero di righe è lo stesso:ecco perché ottieni 1 come risultato.
Penso che tu debba trovare il numero di valori diversi per queste colonne. Questo può essere fatto usando count distinto:
select (COUNT(DISTINCT condition_id)/COUNT(DISTINCT person_id)) as prevalence
from disease
where condition_id=12345;