首页 技术 正文
技术 2022年11月21日
0 收藏 781 点赞 2,435 浏览 1421 个字

//将当前行某列的值与前面所有行的此列值相加,即累计求和:

//方法一:

with t as(

     select 1 val from dual union all

     select 3 from dual union all

     select 5 from dual union all

     select 7 from dual union all

     select 9 from dual)

select val,

       sum(val)

       over (order by rownum rows between unbounded preceding and current row)

       sum_val

from t

group by rownum,val

order by rownum;

       VAL    SUM_VAL

———- ———-

         1          1

         3          4

         5          9

         7         16

         9         25

//解析:

//sum(val)计算累积和;

//order by rownum 按照伪列rownum对查询的记录排序;

//between unbounded preceding and current row:定义了窗口的起点和终点;

//unbounded preceding:窗口的起点包括读取到的所有行;

//current row:窗口的终点是当前行,默认值,可以省略;

//

//方法二:

with cte_1 as(

     select 1 val from dual union all

     select 3 from dual union all

     select 5 from dual union all

     select 7 from dual union all

     select 9 from dual

     )

,cte_2 as(

    select rownum rn,val from cte_1

    )

select a.val , sum(b.val) sum_val

from cte_2 a , cte_2 b

where b.rn <= a.rn

group by a.val

/

//方法三:

//创建一个递归函数,求和

//f(n) = x + f(n-1)

create table t

as

select 1 id,1 val from dual union all

select 2,3 from dual union all

select 3,5 from dual union all

select 4,7 from dual union all

select 5,9 from dual

/

create or replace function fun_recursion(x in int)

return integer is

       n integer :=0;

begin

     select val into n

     from t

     where id=x;

     if x=1 then

        return n;

     else

         return n + fun_recursion(x-1);

     end if;

     exception

     when others then

          dbms_output.put_line(sqlerrm);

end fun_recursion;

/

select val,fun_recursion(id) sum_val from t;

       VAL    SUM_VAL

———- ———-

         1          1

         3          4

         5          9

         7         16

         9         25

//  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,918
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,444
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,069
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,701
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741