如何分组然后计算数字列在特定范围内的组?

时间:2017-01-26 16:52:27

标签: sql oracle oracle10g

基本上我想计算列在特定范围内的组数。

示例:

DATA:
COL1:           COL2:
CC2SYS_LOAD     2239
CC2SYS_LOAD     2307
CC2SYS_LOAD     2316
CC2SYS_LOAD     7164
CC2SYS_LOAD     7169
CC2SYS_LOAD     7179

我需要它返回2的计数,因为有2组3条记录,其中COL2的值相互下降900.

可能有100个或没有。

1 个答案:

答案 0 :(得分:1)

试试这个:

select
    sum(flag) + 1
from (
    select
        case when col2 - lag(col2,1,col2) over (order by col2) > 900 then 1 end flag
    from your_table
) t

标志(使用窗口函数lag构建)标记下一组的开始。