Select 一系列数字并在 Oracle 中将它们分组

Select a range of number and group them in Oracle

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

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

有几个号码,每个号码都有这些分机号,顺序随机。我需要将它们分组到每个号码的范围内,以便这些扩展名存在。

让我知道任何 questions/clarifications。

您可以通过从每个分机号中减去一个连续的号码来实现。对于顺序扩展,这将是一个常量。然后,您可以按此差异分组:

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);