Как выбрать из таблицы строки, чтоб сумма значений не превышала заданную величину?
Есть таблица, один из столбцов ("amount") хранит значения целочисленного типа. Можно ли хитро написать селект, чтоб выбрать строки (order by created_at) таким образом, чтоб суммарное значение всех amount'ов было либо равно, либо максимально близко к заданному значению, но не превышало его? СУБД Postgresql 9.6
P.S.
Немного внесу ясности, нужно не выбрать из всех имеющихся строк комбинацию из подходящих значений, чтоб максимально приблизиться к нужному значению, а идти по порядку и складывать значения, пока не упрёмся в лимит. Сейчас так и работает: выбираются все значения в нужном порядке, а затем в цикле идём по строкам и наращиваем счётчик на amount, пока он не превысит нужное нам значение. Просто думал можно будет на уровне запроса выбрать необходимые строки.
Для правильного вопроса надо знать половину ответа
Если не ошибаюсь, то это вариант задачи об упаковке рюкзака. Она относится к NP-полным и гарантированно решается только полным перебором вариантов. Вряд ли на SQL можно достаточно эффективно её решить, тем более одним запросом.