这是贴在这里的更复杂的一个简单的问题:递归SQL语句(PostgreSQL系统) - 简化版本
Recursive SQL statement (PostgreSQL 9.1.4)
简化问题
给你已存储在第3列上三角矩阵(RowIndex,ColumnIndex,MatrixValue):
ColumnIndex
1 2 3 4 5
1 2 2 3 3 4
2 4 4 5 6 X
3 3 2 2 X X
4 2 1 X X X
5 1 X X X X
X v alues是使用以下算法计算:
M[i,j] = (M[i-1,j]+M[i,j-1])/2
(i= rows, j = columns, M=matrix)
Example:
M[3,4] = (M[2,4]+M[3,3])/2
M[3,5] = (m[2,5]+M[3,4])/2
的全部所需的结果是:
ColumnIndex
1 2 3 4 5
1 2 2 3 3 4
2 4 4 5 6 5
3 3 2 2 4 4.5
4 2 1 1.5 2.75 3.625
5 1 1 1.25 2.00 2.8125
的样本数据:
create table matrix_data (
RowIndex integer,
ColumnIndex integer,
MatrixValue numeric);
insert into matrix_data values (1,1,2);
insert into matrix_data values (1,2,2);
insert into matrix_data values (1,3,3);
insert into matrix_data values (1,4,3);
insert into matrix_data values (1,5,4);
insert into matrix_data values (2,1,4);
insert into matrix_data values (2,2,4);
insert into matrix_data values (2,3,5);
insert into matrix_data values (2,4,6);
insert into matrix_data values (3,1,3);
insert into matrix_data values (3,2,2);
insert into matrix_data values (3,3,2);
insert into matrix_data values (4,1,2);
insert into matrix_data values (4,2,1);
insert into matrix_data values (5,1,1);
可以这样做?
是。 (这只是一个评论,所以我可以在后面找到这个问题) – podiluska 2012-07-19 15:50:07
看起来你在预期输出中有一个错误:M [4,4]是2.75(4.5 + 1)/ 2 = 5.5 = 2.75。只是想在发布之前确认我的解决方案是正确的。 – 2012-07-19 16:02:04
@podiluska:你可以使用“最喜欢的”功能来达到同样的目的,而不需要让世界知道。 – 2012-07-19 20:17:25