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

来源:互联网 发布:员工评语网络大全 编辑:程序博客网 时间:2024/05/29 03:23

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


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


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


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


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


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

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


原创粉丝点击