Вы сталкиваетесь с целочисленным делением: оба операнда являются целочисленными, поэтому база данных выполняет вычисления в целочисленном контексте (и, следовательно, возвращает целочисленное значение).
Чтобы избежать этого, вы можете просто умножить одно из значений с десятичным числом, поэтому это приводит к десятичному контексту в вычислениях.
Кроме того, вы можете избежать необходимости подзапроса, используя условное агрегирование: это работает путем перемещения фильтрации в функции агрегирования, например, так:
select
1.0
* count(distinct
case when new_aging_group in ('91-120','121-180','181-365','366+')
then ed.accountnumber
end)
/ count(distinct e.accountnumber)
as totalaccounts
from revenueanalytics.dbo.epicdata