Oracle求连续区间内的最大最小值
程序员文章站
2022-06-08 18:40:05
...
现在有一组数据记录了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