Вам нужно разделить итоговую сумму по ID.Промежуточный итог всегда требует порядка некоторого столбца, по порядку, по которому вы хотите вычислить промежуточный итог.Предполагая, что итоговая сумма по каждому идентификатору основана на порядке следования
Подход 1 : его можно записать в виде простого запроса, если ваша СУБД поддерживает аналитические функции
SELECT ID
,name
,marks
,Running_total = SUM(marks) OVER (PARTITION BY ID ORDER BY marks ASC)
FROM students
Подход 2 : Вы можете использовать OUTER APPLY, если ваша версия базы данных / сама СУБД не поддерживает аналитические функции
SELECT S.ID
,S.name
,S.marks
,Running_total = OA.runningtotalmarks
FROM students S
OUTER APPLY (
SELECT runningtotalmarks = SUM(SI.marks)
FROM students SI
WHERE SI.ID = S.ID
AND SI.marks <= S.marks
) OA;
Примечание: - Вышеуказанные запросы были проверены MS SQL Server.