您的位置:首页 > 数据库 > Oracle

oracle分析函数使用

2013-03-05 14:30 357 查看
表tb1的记录如下:

v_date name val

201201 中国 5

201203 中国 9

201204 中国 10

要实现的功能是找出对应日期下个月的val值是什么?用于本月和下月的对比

select v_date,

name,

val,

sum(val) over(order by to_date(v_date, 'yyyymm') range between interval '0' month preceding and interval '1' month following) - val m_val

from tb1;

Range表示数值范围,Rows表示行范围。

Range的语法:

over(order by xx range between n preceding and n following)

Range between必须为聚合函数/开窗函数服务,而且必须针对数值字段,因为表示的是一个数值范围,这个很容易和行范围rows混淆

Rows的语法:

over(order by xx rows between x preceding and y following)

每行对应的数据窗口是之前x行,之后y行,共包括x+1+y行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: