版本:oracle10g假定一个序列 
rowno, value
1      1
2      2
3      2
4      3
5      4
6      4
7      4
8      5
9      4
... ...通过分析函数的rows 4 preceding子句,可以指定一个含当前行共5行的窗口,现在我想求出这个序列中,每个数字在它对应的窗口中,出现的次数.例如上面这个序列中,假设当前行为rowno=5,那么1,3,4在这个窗口中只出现了1次,而2出现了2次,有没有类似于count这样的函数来进行统计? (count似乎只对RANGE 型的窗口有效)对以上序列,我希望的结果是这样的:rowno, value, cnt
1      1       1
2      2       1
3      2       2
4      3       1
5      4       1
6      4       2
7      4       3
8      5       1
9      4       4
... ...只要能求出这个cnt,再计算cnt/5,我就可以求出该窗口中,该数字的分布概率了,但这个cnt该怎么求?

解决方案 »

  1.   

    http://space.itpub.net/6517/viewspace-611067
    参考下http://www.oracle.com/technology/global/cn/products/bi/stats_fns/index.html
      

  2.   

    我倒,这东西还真是用count + partition就能做出来,看来半夜里人脑子容易犯糊涂.....
      

  3.   

    select rowno, value, (length(cc) - nvl(length(replace(cc, value)), 0)) / length(value) cnt
      from (select t.*, wm_concat(t.value) over(order by t.rowno rows 4 preceding) cc from test t);