sql - 在 Postgresql 中选择正聚合值并忽略负值

标签 sql postgresql aggregation window-functions

我必须应用某种转换 fn(argument)。这里 argument 等于 value,但不是负数。当您获得第一个负 value 时,您将“等待”直到它与连续值相加并且此和变为正数。然后你做fn(argument)。查看我要获取的表:

value      argument 
---------------------
  2           2      
  3           3      
 -10          0      
  4           0
  3           0
  10          7
  1           1

我可以对所有值求和并将 fn 应用于总和,但是 fn 对于不同的行可能不同,并且必须知道行号才能选择具体的fn。

想要一个 Postgres SQL 解决方案,看起来窗口函数很合适,但我还没有足够的经验来编写执行此操作的表达式。事实上,不幸的是,我是“thinking in sql”的新手。我想这可以通过命令式方式轻松完成,但我还不想编写存储过程。

最佳答案

我想我迟到了,但这可能对某人有帮助:

select
    value,
    greatest(0, value) as argument
from your_table;

关于sql - 在 Postgresql 中选择正聚合值并忽略负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049647/

相关文章:

python - 如何创建自己的方法并在 DataFrame 中使用它?

sql - 如何优化sql数据库中两个表的100万条条目的排序和连接?

sql - 如何复制 PostgreSQL 数据库中的数据量?

sql - 如何确保postgresql表中只有一列不为空

sql - SQL 中相应掩码的计数值

MySQL-使用复合索引键改进 count(*) 聚合

SQL MIN(value) 匹配日期

postgresql - PostgreSQL 中基于游标的记录

PostgreSQL 在每个新年重置 id 或在同一年增加

elasticsearch - 排序elasticsearch范围聚合