我想要写一个查询,从一个有序表中取出行,同时聚合一列的值,直到聚合值达到所需的阈值。
另一个条件是违反阈值的行应该包括在查询结果中。
我已经查找了在PostgreSQL中完成的其他解决方案,导致我创建了以下查询:
然而,这个查询存在一个问题,它代表了一个PostgreSQL窗口查询,如果给定行的列值不是唯一的,则跳过对所有行的列值进行聚合。
遗憾的是,窗口查询不支持考虑具有唯一值列的情况。
我听说还有一些替代方法可以实现这个功能,比如创建一个PostgreSQL函数,但我不知道从哪里开始进行这种聚合查询。
如果有任何想法或知识,我将非常感激。
另一个条件是违反阈值的行应该包括在查询结果中。
我已经查找了在PostgreSQL中完成的其他解决方案,导致我创建了以下查询:
SELECT * FROM (
SELECT *, SUM(amount) OVER (ORDER BY amount DESC) AS running_amount
FROM public.orders WHERE price = 0.09) AS t
WHERE t.running_amount <= 15;
然而,这个查询存在一个问题,它代表了一个PostgreSQL窗口查询,如果给定行的列值不是唯一的,则跳过对所有行的列值进行聚合。
遗憾的是,窗口查询不支持考虑具有唯一值列的情况。
我听说还有一些替代方法可以实现这个功能,比如创建一个PostgreSQL函数,但我不知道从哪里开始进行这种聚合查询。
如果有任何想法或知识,我将非常感激。