用于获取特定模式的 SQL 命令

问题描述

我有一个包含“观察”列的表格示例:

enter image description here

请帮助使用 SQL 命令以获得以下“累积乘法”输出:

2
6
30
300

解决方法

一种方法是递归 CTE:

with tt as (
      select t.*,row_number() over (order by obs) as seqnum
      from t
     ),cte as (
      select obs as prod,seqnum
      from tt
      where seqnum = 1
      union all
      select cte.prod * tt.obs,tt.seqnum
      from cte join
           tt
           on tt.seqnum = cte.seqnum + 1
     )
select *
from cte;

另一个使用算术实现“乘积”窗口函数:

select t.*,exp(sum(log(obs)) over (order by obs))
from t;

Here 是一个 dbfiddle。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...