Oracle求连续区间内的最大最小值

现在有一组数据记录了NBA球队每年的夺冠队伍,如下:


要求求出连续夺冠的队伍和连续年月,效果如下:


首先要判断一个队是否连续夺冠,我们可以通过lag函数来获取字段的上一个值,就比较容易判断了。


然后给判断赋值,连续的为0,不连续的 为1。


然后使用累加为后续的分组作准备:


最后就是很基础的分组求最大最小值过程了,就不再赘述了。最终sql如下:

select team,min(y),max(y) from (
select team,y,sum(b)over(order by y)c
from
(
select team,y,
case 
  when team=lag(team)over(order by y) then 0 else 1 end as b
from nba))
group by c,team having count(1)>1
order by 2


©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页