Вы используете то, что известно как целочисленная математика. При использовании 2 целых чисел в SQL (Server) возвращаемое значение также является целым числом. Например, 2 + 2 = 4
, 5 * 5 = 25
. То же относится и к делению 8 / 10 = 0
. Это потому, что 0.8
не является целым числом, но возвращаемое значение будет равно одному (поэтому десятичные точки теряются).
Обычный способ изменить это поведение - умножить одно из выражений на 1.0
. Например:
counts/(select sum(counts) * 1.0 from tbl) as PofTotal
Если вам нужна большая точность, вы можете увеличить точность десятичного значения до 1.0
(т.е. до 1.000
, 1.0000000
и т. Д.).