oracle程序窗口,Oracle 窗口函数 的使用

窗口函数可以与下面这些函数结合使用:sum()、avg()、max()、min()、count()、variance()、stddev()等。

窗口函数还可以与first_value和last_value结合使用,这时候返回窗口中的第一个值和最后一个值。

0.表数据

0818b9ca8b590ca3270a3433284dd417.png

1.计算累计和

下面这个查询通过执行累计和操作计算出第一行到第三行的累加值,。

SELECT

"SUM"(counts),"SUM"("SUM"(counts)) over (ORDER BY stock_id ROWS unbounded preceding)

FROM

t_stockhistory

GROUP BY stock_id

函数解释:

sum(counts),计算出counts字段值的总和

sum(sum(counts)),计算出累计和值

group by xx,按照xx字段对查询到的记录进行排序

rows between unbounded preceding and current row,定义了窗口的起点和终点,窗口的终点是当前行。

unbounded preceding,窗口的起点行,包括循环取到的所有行。

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

整个表达式的意思是从查询记录的第一行开始,到最后一行结束,查询出累加值。

每次处理窗口的一行记录时,都是从该窗口的第一条记录开始。每一行记录出来完之后,就将当前行的数量加到累计和中,并向下移动窗口的终点到下一行。循环处理,直到最后一行的记录被处理。

运行结果

0818b9ca8b590ca3270a3433284dd417.png

由上图可以看出,可以得到累计和值。

2.第二种方式求累计和值

select

stock_id,"SUM"(counts) over (ORDER BY stock_id ROWS unbounded preceding)

from

t_stockhistory

结果如下

0818b9ca8b590ca3270a3433284dd417.png

由上图可以看出,可以得到编号与累计和值。

3.第三种方式

select

stock_id,"SUM"(counts) over (ORDER BY stock_id)

from

t_stockhistory

结果如下

0818b9ca8b590ca3270a3433284dd417.png

4.计算累计差

select

counts - sum(counts) over (ORDER BY stock_id ROWS unbounded preceding)

from

t_stockhistory

运行结果

0818b9ca8b590ca3270a3433284dd417.png

由上图可以看出,可以得到累计差值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值