No the reason you get 1 is not due to rounding. This is because you group by the amount and then compute the sum of that value. As long each value is unique, the result will be 1. If you have values that reappears, you get something else. Try this:
DROP TABLE IF EXISTS #temp
CREATE TABLE #temp (a float NOT NULL)
INSERT #temp (a) VALUES(16), (23), (23), (19), (19), (19)
SELECT a, a/SUM(a) FROM #temp GROUP BY a
Do you see the pattern?
I don't know exactly what you are looking for, but I think this is what you want:
SELECT [SumOf Amt] / SUM([SumOf Amt)] OVER()
FROM tbl1
And, yes, there is no GROUP BY.
When you say SUM OVER(), you get the total sum for the result set.
Say that you have different accounts you for which would want to make this computation. Then you would do:
SELECT account, [SumOf Amt] / SUM([SumOf Amt)] OVER(PARTITION BY account)
FROM tbl1
The PARTITION BY clause says that you want the sum per account.