Postgresql选择,直到达到一定的总金额

Postgresql选择,直到达到一定的总金额,sql,postgresql,select,Sql,Postgresql,Select,我想知道我是否能在以下问题上得到任何帮助 我有一个简化的交易表如下,我只想选择交易,直到我的总金额达到一定的金额 交易表 现在假设我想在表上做一个选择,直到总数为6,即前两行,我该怎么做 我在考虑也许自己做一个连接和一些总和,但并没有真正取得任何进展。如果可能的话,我宁愿不使用任何函数 最低金额也可以是类似的 任何帮助都将不胜感激: T 如果Postgres像SQL Server一样支持子查询,那么这个查询可以在SQL Server上运行。它可以帮助您尽管它可能不是最有效的方法,因为您实际上仍然

我想知道我是否能在以下问题上得到任何帮助

我有一个简化的交易表如下,我只想选择交易,直到我的总金额达到一定的金额

交易表

现在假设我想在表上做一个选择,直到总数为6,即前两行,我该怎么做

我在考虑也许自己做一个连接和一些总和,但并没有真正取得任何进展。如果可能的话,我宁愿不使用任何函数

最低金额也可以是类似的

任何帮助都将不胜感激:

T


如果Postgres像SQL Server一样支持子查询,那么这个查询可以在SQL Server上运行。它可以帮助您

尽管它可能不是最有效的方法,因为您实际上仍然是先选择所有内容,我会考虑使用运行总数

select id, 
       date, 
       amount, 
       running_total
from (
    select id,
           date,
           amount,
           sum(amount) over (order by date asc) as running_total
    from transactions
) t
where running_total <= 6
比如:

SELECT
  *
FROM
  (
  SELECT
    id
    , date
    , amount
    , (SELECT SUM(amount) FROM Transactions WHERE id <= t.id) AS RunningTotal
  FROM
    Transactions t
) t1
WHERE
  t1.RunningTotal < 6

@amount_to_rich不是一个表达式,它只是一个参数,由amount to rich替换,在我说它可以在sqlserver上运行之前,我编辑了我的posttry。我不确定它是否可以在Postgres上运行。如果没有参数,它应该可以在PostgreSql上正常运行。您假设ID的顺序与日期相同,这可能不一定是这样。是的,如果日期是一个问题,则需要在子查询中输入order by,但这并没有在开场白中提及,除非只是暗示——这是有道理的!。决定用这个。谢谢:我想这可能有点小问题。如果我使用运行的_total尝试上面的新交易表,我当前的解决方案是按金额asc、日期订购asc@a_horse_with_no_name您能告诉我如何修改此SQL以获得id列表和大于8的运行总数吗。所以,对于给定的事务表示例,我需要得到最小行数,这些行的总和将使我的金额大于8,按日期排序,它需要返回id的1,2,3,因为它们总共返回9?
select id, 
       date, 
       amount, 
       running_total
from (
    select id,
           date,
           amount,
           sum(amount) over (order by date asc) as running_total
    from transactions
) t
where running_total <= 6
SELECT
  *
FROM
  (
  SELECT
    id
    , date
    , amount
    , (SELECT SUM(amount) FROM Transactions WHERE id <= t.id) AS RunningTotal
  FROM
    Transactions t
) t1
WHERE
  t1.RunningTotal < 6