[英]how to have a repeating calculation in a POSTGRES select query?
所以我的部分查询是这样的
select
column_a,
0.75 * power(0.93, (0.1428 * column_b))
假设column_b
的值为3
有没有办法将这条线0.75 * power(0.93, (0.1428 * column_b))
表示为这样?
0.75 * power(0.93, (0.1428 * 3)) + 0.75 * power(0.93, (0.1428 * 2)) + 0.75 * power(0.93, (0.1428 * 1))
基本上,对于 column_b 的任何值,function 都会重复。 有没有办法在 Postgres sql 中表示这个?
由于此计算将找到0.75 * power(0.93, (0.1428 * column_b))
的总和重复column_b
中的次数,因此您可以使用generate_series
column_b
中数量的增量,然后再对该计算的结果求和,例如.
架构 (PostgreSQL v13)
create table sample (
column_a char(1),
column_b int
);
insert into sample values ('a',3), ('b',2);
使用 generate_series 生成可能的数字
select
column_a,
column_b,
array(
select b_val
from generate_series(1,column_b) b_val
) as computed_column
from sample;
column_a | column_b | 计算列 |
---|---|---|
一个 | 3 | 1,2,3 |
b | 2 | 1,2 |
求重复计算的总和
select
column_a,
column_b,
(
select sum(0.75 * power(0.93, (0.1428 * b_val)))
from generate_series(1,column_b) b_val
) as computed_column
from sample;
column_a | column_b | 计算列 |
---|---|---|
一个 | 3 | 2.203924916826077250 |
b | 2 | 1.476883153703056500 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.