我在oracle中有数据,连续数字代表不同ID的数据。在这个例子中,开始和结束是每个月依次表示的数字(1月13日是205,2月13日是206,3月13日207等)。我需要确定最长的时间段,其中最多的ID具有连续的月份数据。Oracle SQL查找最多的ID最大的岛
我的表看起来像这样:
TAB1
╔════════╦═══════╗
║ ID ║ MONTH ║
╠════════╬═══════╣
║ 111118 ║ 210 ║
║ 111118 ║ 211 ║
║ 111118 ║ 212 ║
║ 111118 ║ 213 ║
║ 111118 ║ 214 ║
║ 111118 ║ 215 ║
║ 111118 ║ 216 ║
║ 111118 ║ 217 ║
║ 111118 ║ 218 ║
║ 111118 ║ 219 ║
║ 111118 ║ 220 ║
║ 111118 ║ 221 ║
║ 111118 ║ 222 ║
║ 111118 ║ 223 ║
║ 111118 ║ 224 ║
║ 111118 ║ 225 ║
║ 111126 ║ 200 ║
║ 111126 ║ 201 ║
║ 111126 ║ 205 ║
║ 111126 ║ 206 ║
║ 111126 ║ 207 ║
║ 111126 ║ 208 ║
║ 111126 ║ 209 ║
║ 111126 ║ 210 ║
║ 111126 ║ 211 ║
║ 111126 ║ 212 ║
║ 111126 ║ 213 ║
║ 111126 ║ 214 ║
║ 111126 ║ 215 ║
║ 111126 ║ 216 ║
║ 111126 ║ 217 ║
║ 111126 ║ 218 ║
║ 111126 ║ 219 ║
║ 111126 ║ 220 ║
║ 111126 ║ 221 ║
║ 111126 ║ 222 ║
║ 111126 ║ 223 ║
║ 111126 ║ 224 ║
║ 111126 ║ 225 ║
║ 111127 ║ 211 ║
║ 111127 ║ 212 ║
║ 111127 ║ 213 ║
║ 111127 ║ 214 ║
║ 111127 ║ 215 ║
║ 111127 ║ 216 ║
║ 111127 ║ 217 ║
║ 111127 ║ 218 ║
║ 111127 ║ 219 ║
║ 111127 ║ 220 ║
╚════════╩═══════╝
我做了一个小岛分析这样的resulsts:
╔════════╦═══════╦═════╗
║ ID ║ START ║ END ║
╠════════╬═══════╬═════╣
║ 111118 ║ 210 ║ 225 ║
║ 111126 ║ 205 ║ 225 ║
║ 111126 ║ 200 ║ 201 ║
║ 111127 ║ 211 ║ 220 ║
╚════════╩═══════╩═════╝
在这个例子中最好的时间段看是,要么
205-225 which includes 111118, 111126 or
211-220 which includes 111118, 111126, 111127
有关如何完成此任务的任何建议?
什么开始和结束的手段?他们是几个月? – AndreDuarte 2014-09-24 17:42:01
欢迎来到Stack Overflow!你可以发布你的数据库模式? – tsnorri 2014-09-24 17:44:40
开始和结束是从数据开始起依次代表每个月的数字。说Jan13是205,然后Feb13是206,March13 207等。 – 2014-09-24 17:48:20