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


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟德三笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值