Saya akan sangat berhati-hati dengan struktur data seperti ini. Pertama, periksa apakah semua id
s memiliki tepat satu harga:
select id
from table t
group by id
having count(distinct price) > 1;
Saya pikir metode teraman adalah mengekstrak harga tertentu untuk setiap id
(sebutkan maksimum) dan kemudian lakukan agregasi:
select sum(price)
from (select id, max(price) as price
from table t
group by id
) t;
Kemudian, perbaiki data Anda sehingga Anda tidak memiliki dimensi aditif yang berulang. Harus ada tabel dengan satu baris per id dan harga (atau mungkin dengan duplikat tetapi dikendalikan oleh tanggal efektif dan tanggal akhir).
Datanya kacau; Anda tidak boleh berasumsi bahwa harganya sama di semua baris untuk id yang diberikan. Anda perlu memeriksanya setiap kali menggunakan kolom, hingga Anda memperbaiki datanya.