У меня следующий запрос:
SELECT (COUNT(DISTINCT CASE WHEN houses.level = 'top' THEN users.id END)::float / NULLIF(COUNT(DISTINCT users.id)::float, 0))
FROM users
LEFT JOIN houses ON houses.user_id = users.id
И вместо отношения я хочу вернуть процент, поэтому я изменил его на:
SELECT (COUNT(DISTINCT CASE WHEN houses.level = 'top' THEN users.id END)::float / NULLIF(COUNT(DISTINCT users.id)::float, 0)) * 100
FROM users
LEFT JOIN houses ON houses.user_id = users.id
Однако, если знаменатель (NULLIF(COUNT(DISTINCT users.id)::float, 0)
) возвращает ноль, это означает, что я буду умножать NULL
* 100. Как я могу просто вернуть NULL без умножения, если знаменатель равен 0 (и, следовательно, ноль из-за NULLIF) .