Это может сработать для вас после замены contentsum
реальным именем вашей таблицы:
select rpad(main.prefix, 5, 0) as ref, sum(contentsum.value) as total
from (select distinct trim(trailing '0' from ref) as prefix from contentsum) as main
join contentsum on contentsum.ref like concat(main.prefix, '%')
group by main.prefix
;
Однако его итоги не совпадают с вашими. Вместо этого они соответствуют тому, что, как я думал, вы складывали, когда я впервые прочитал вопрос.
По сути, ключ состоит в том, чтобы присоединить таблицу к себе по некоторой функции значений ref
, сгруппировать по левой стороне и суммировать по правой стороне. Подзапрос конденсирует идентичные строки и уменьшает некоторое дублирование кода, но не является строго необходимым, если все значения ref
уникальны.