Бих бил много внимателен със структура от данни като тази. Първо проверете дали всички id
имат точно една цена:
select id
from table t
group by id
having count(distinct price) > 1;
Мисля, че най-безопасният метод е да се извлече определена цена за всеки id
(кажете максимума) и след това направете агрегацията:
select sum(price)
from (select id, max(price) as price
from table t
group by id
) t;
След това отидете да поправите данните си, така че да нямате повтарящо се допълнително измерение. Трябва да има таблица с по един ред за идентификатор и цена (или може би с дубликати, но контролирани от ефективни и крайни дати).
Данните са объркани; не трябва да приемате, че цената е една и съща за всички редове за даден идентификатор. Трябва да го проверявате всеки път, когато използвате полетата, докато не коригирате данните.