oracle中的开窗函数了解ITeye - 威尼斯人

oracle中的开窗函数了解ITeye

2019年02月22日08时05分12秒 | 作者: 振博 | 标签: 函数,开窗,数据 | 浏览: 2318

开窗函数指定了剖析函数作业的数据窗口巨细,这个数据窗口巨细可能会跟着行的改变而改变,举例如下:
over(order by salary) 依照salary排序进行累计,order by是个默许的开窗函数
over(partition by deptno)依照部分分区
over(order by salary range between 50 preceding and 150 following)
每行对应的数据窗口是之前行起伏值不超越50,之后走起伏值不超越150
over(order by salary rows between 50 preceding and 150 following)
每行对应的数据窗口是之前50行,之后150行
over(order by salary rows between unbounded preceding and unbounded following)
每行对应的数据窗口是从榜首行到最后一行,等效:
over(order by salary range between unbounded preceding and unbounded following)

eg.

select * from
(
select p.deal_no,p.step_id,p.charge_id,p.dr_acc_no,
sum(p.dr_origin_amt)
over (partition by p.deal_no,p.step_id,p.dr_acc_no order by p.charge_id) as a,
dense_rank()
over (partition by p.deal_no,p.step_id,p.dr_acc_no order by p.charge_id) as b
  from ixqdbaci p
where p.entity=002 and p.charge_id not like 99%
and p.deal_no like 00779010010612%
) where b=1
sum中的over()加上order by后会变成递加累加,而不是分组的一切值sum,所以在这条sql中应该把a列的oder by p.charge_id删去,b列的dense_rank是为了区别同一组的不同行,而且order by是不行少的。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章