欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-08 18:40:05
...

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

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

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

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

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

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

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

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

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

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

最后就是很基础的分组求最大最小值过程了,就不再赘述了。最终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