Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL早期版本的累积最小值_Postgresql - Fatal编程技术网

PostgreSQL早期版本的累积最小值

PostgreSQL早期版本的累积最小值,postgresql,Postgresql,我正在使用PostgreSQL 8.2,这是我问这个问题的主要原因。我想在这个版本的PostgreSQL中获得一个列(命名为C),其中包含一些其他预排序列(命名为B)的累积最小值。因此,对于某些排序,C列的第n行应该是第1行到第n行中B值的最小值 在下例中,A列给出顺序,C列包含B列按该顺序的累积最小值: A B C ------------ 1 5 5 2 4 4 3 6 4 4 5 4 5 3 3

我正在使用PostgreSQL 8.2,这是我问这个问题的主要原因。我想在这个版本的PostgreSQL中获得一个列(命名为C),其中包含一些其他预排序列(命名为B)的累积最小值。因此,对于某些排序,C列的第n行应该是第1行到第n行中B值的最小值

在下例中,A列给出顺序,C列包含B列按该顺序的累积最小值:

A   B     C
------------
1   5     5     
2   4     4  
3   6     4  
4   5     4  
5   3     3
6   1     1  
解释我想要什么的最简单方法可能是在以后的版本中,下一个查询的作用:

SELECT A , B, min (B)  OVER(ORDER BY A) C FROM T;
但是8.2版当然没有窗口功能

我已经编写了一些plpgsql函数,可以在阵列上执行此操作。但要使用它,我必须使用我自己再次编写的聚合函数(该版本中没有内置的array\u agg)。这种方法不是很有效,虽然它在较小的表上工作得很好,但现在我需要在较大的表上使用它,它几乎无法使用

因此,我将非常感谢任何关于这个问题的替代、更有效的解决方案的建议


谢谢大家!

您可以使用这个简单的子选择:

SELECT a, b, (SELECT min(b) FROM t t1 WHERE t1.a <= t.a) AS c
FROM   t
ORDER  BY a;
但实际上,您应该升级到更新版本的PostgreSQL。8.2版在去年已经过时。没有更多的安全更新。还有这么多缺少的功能

CREATE INDEX t_a_b_idx ON t (a,b);