Если мы начнем отсюда:
with s as ( select itemtype, sum(amount) as sum_c
from test3
group by itemtype),
x as ( select s.*, amount/sum_c as persen
from test3 t
inner join s on t.itemtype = s.itemtype)
select sum(persen) from x;
Пожалуйста, никогда не используйте ключевые слова в качестве псевдонимов (пример: сумма)
Это возвращает число 3 из вашего примера, и ваш вопрос: "SQL процент не достигает 100% ". Так что не совсем понятно, что вы хотите здесь выполнить ...
Ваш первый запрос будет повторен:
itemtype sum_c
1 100
2 100
3 100
Что логично, когда вы группируете по типу элемента .
Во втором запросе вы делите результат sum_c
на сумму, равную 100/100, и получается:
itemtype sum_c persen
1 100 1
2 100 1
3 100 1
Итак, Пожалуйста, обновите ваш вопрос с результатом, который вы хотите получить из данных этого примера.
Вот пример вашего примера: https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=fd6244948053822b1f339d7939ef7723 Возможно, это поможет вам или, возможно, другим дать вам решение ...