select t.* from (
select "id", "price" from "prod" order by random() limit n
) as t
group by t."id", t."price"
having sum("price") < m;
select t.* from (
select "id", "price" from "prod" order by random() limit n
) as t
group by t."id", t."price"
having sum("price") < m;