Вы можете использовать этот запрос:
SELECT t1.ID
FROM attachments t1, attachments t2
WHERE t2.UploadedDate >= t1.UploadedDate
GROUP BY t1.ID
HAVING sum(t2.Size) > 2GB
, чтобы выбрать вложения для удаления.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ в то время как это стандартный sql, он будет медленным, так как это Ω (n ^ 2) худший случай для таблицы с n строками. Используйте решение @ newtover.
В этом случае вам может быть лучше использовать хранимую процедуру и перебирать вложения, суммируя их размеры.
А для потерянных душ postgres вот решение, эквивалентное @ newtover, но использующее оконную функцию:
SELECT outer_t.ID
FROM (
SELECT t.ID, sum(t.Size) s
OVER (ORDER BY t.UploadedDate DESC)
FROM attachments as t
) as outer_t
WHERE outer_t.s > 2GB