日期:2014-05-17  浏览次数:20777 次

请教一个统计的SQL的写法
表的数据:
id                   data
-------------------
1                       100
1                       101
1                       102
...
1                       110              
1                       200
1                       201
...
1                       210

ID的除了1以外还有2,3等,很多.

我想得到的结果是
id               start                     end
-------------------------------
1                   100                       110
1                   201                       210
...

就是说把连续的一段给取出来,作为一条记录

------解决方案--------------------
如果同一id的data不重复,可以这样写
select id, min_data, max_data
from (select id, data-r data_r, min(data) min_data, max(data) max_data
from (select id, data, rank() over(partition by id order by data) r from T)
group by id, data-r)
order by 1,2;