gpt4 book ai didi

sql - 查找表中每个 ID 的最大连续年份(Oracle SQL)

转载 作者:行者123 更新时间:2023-12-04 13:52:41 25 4
gpt4 key购买 nike

我正在尝试解决如何在一系列记录中找到连续年份的最大计数的问题。在下面的例子中:

ID  Year1 19931 19941 19951 19951 20011 20022 19932 19952 19962 19962 19982 19992 20002 20012 2001

我的结果集应该是这样的

id   count1      32      4

我必须在 oracle SQL 中编写代码。

最佳答案

这将产生您想要的结果:

select
id,
ayear,
byear,
yeardiff
from
(
select
a.id,
a.year ayear,
b.year byear,
(b.year - a.year)+1 yeardiff,
dense_rank() over (partition by a.id order by (b.year - a.year) desc) rank
from
years a
join years b on a.id = b.id
and b.year > a.year
where
b.year - a.year =
(select count(*)-1
from years a1
where a.id = a1.id
and a1.year between a.year and b.year)
)
where
rank = 1

EDIT 已更新以显示最长延伸的开始/结束年份。

SQLFiddle

关于sql - 查找表中每个 ID 的最大连续年份(Oracle SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com