繁体   English   中英

如何在 POSTGRES select 查询中进行重复计算?

[英]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

在 DB Fiddle 上查看工作演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM