选择一个数字范围并在Oracle中对它们进行分组

时间:2015-01-02 21:55:10

标签: sql oracle

我有一个名为Numbers的表格,格式如下:

Number Extension 
123     1
123     24
123     6
123     10
123     11
123     25
123     2
123     3
123     13

我需要这样的结果集:

Number Begin End
123     1     3
123     6     6
123     10    13
123     24    25

有几个数字,每个数字都有随机顺序的这些扩展名。我需要在每个数字的范围内对它们进行分组,以便这些扩展存在。

让我知道任何问题/澄清。

1 个答案:

答案 0 :(得分:2)

您可以通过从每个扩展名中减去连续数字来完成此操作。对于顺序扩展,这将是一个常量。然后,您可以通过这种差异进行分组:

select number, min(extension), max(extension)
from (select n.*, (extension - row_number() over (partition by number order by extension)) as grp
      from numbers n
     ) n
group by number, grp
order by number, min(extension);