Mam nadzieję, że to jest to, o co Ci chodzi

SELECT sum(value) FROM test WHERE id IN( SELECT min(id) FROM test GROUP BY opid)
Szukam najniższego id, spośród wszystkich z takim samym opid, a potem sumuję value z tak uzyskanych rekordów

Najlepiej zauważyć liczenie gdy zrobisz każdy rekord z inna wartością

CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`opid` varchar(3) NOT NULL,
`value` int(3) NOT NULL,
PRIMARY KEY (`id`),
KEY `opid` (`opid`)
)
INSERT INTO `test` (`id`, `opid`, `value`) VALUES
(1, 'AAA', 10),
(2, 'AAA', 15),
(3, 'AAA', 20),
(4, 'BBB', 25),
(5, 'CCC', 30),
(6, 'DDD', 35),
(7, 'DDD', 40);
Sprawdź wtedy podzapytanie
SELECT min(id) FROM test GROUP BY opid
a zobaczysz, że pokazuje zawsze rekord o najniższym id, czyli de facto ten, w którym ta wartość wystąpiła po raz pierwszy. W takim wypadku jak mój powyższy pokaże Ci rekordy 1, 4, 5, 6 i wyliczy sumę jako 100. A o ten właśnie chyba chodzi i taki być powinien bo 10+25+30+35 =100