关于在工作当中判断连续值的问题,SQL的解法!

废话不多说,直接上需求:
---构建数据
create table nba(y number(4),team varchar2(20));
insert into nba values(1947,'费城勇士');
insert into nba values(1948,'巴尔蒂莫子弹');
insert into nba values(1949,'明尼阿波利斯湖人');
insert into nba values(1950,'明尼阿波利斯湖人');
insert into nba values(1951,'皇家罗切斯特');
insert into nba values(1952,'明尼阿波利斯湖人');
insert into nba values(1953,'明尼阿波利斯湖人');
insert into nba values(1954,'明尼阿波利斯湖人');
insert into nba values(1955,'塞拉库斯民族');
insert into nba values(1956,'费城勇士');
insert into nba values(1957,'波士顿凯尔特人');
insert into nba values(1958,'圣路易斯老鹰');
insert into nba values(1959,'波士顿凯尔特人');
insert into nba values(1960,'波士顿凯尔特人');
insert into nba values(1961,'波士顿凯尔特人');
insert into nba values(1962,'波士顿凯尔特人');
insert into nba values(1963,'波士顿凯尔特人');
insert into nba values(1964,'波士顿凯尔特人');
insert into nba values(1965,'波士顿凯尔特人');
insert into nba values(1966,'波士顿凯尔特人');
insert into nba values(1967,'费城76人');
insert into nba values(1968,'波士顿凯尔特人');
insert into nba values(1969,'波士顿凯尔特人');
insert into nba values(1970,'纽约尼克斯');
insert into nba values(1971,'密尔沃基雄鹿');
insert into nba values(1972,'洛杉矶湖人');
insert into nba values(1973,'纽约尼克斯');
insert into nba values(1974,'波士顿凯尔特人');
insert into nba values(1975,'金州勇士');
insert into nba values(1976,'波士顿凯尔特人');
insert into nba values(1977,'波特兰开拓者');
insert into nba values(1978,'华盛顿子弹');
insert into nba values(1979,'西雅图超音速');
insert into nba values(1980,'洛杉矶湖人');
insert into nba values(1981,'波士顿凯尔特人');
insert into nba values(1982,'洛杉矶湖人');
insert into nba values(1983,'费城76人');
insert into nba values(1984,'波士顿凯尔特人');
insert into nba values(1985,'洛杉矶湖人');
insert into nba values(1986,'波士顿凯尔特人');
insert into nba values(1987,'洛杉矶湖人');
insert into nba values(1988,'洛杉矶湖人');
insert into nba values(1989,'底特律活塞');
insert into nba values(1990,'底特律活塞');
insert into nba values(1991,'芝加哥公牛');
insert into nba values(1992,'芝加哥公牛');
insert into nba values(1993,'芝加哥公牛');
insert into nba values(1994,'休斯顿火箭');
insert into nba values(1995,'休斯顿火箭');
insert into nba values(1996,'芝加哥公牛');
insert into nba values(1997,'芝加哥公牛');
insert into nba values(1998,'芝加哥公牛');
insert into nba values(1999,'圣安东尼奥马刺');
insert into nba values(2000,'洛杉矶湖人');
insert into nba values(2001,'洛杉矶湖人');
insert into nba values(2002,'洛杉矶湖人');
insert into nba values(2003,'圣安东尼奥马刺');
insert into nba values(2004,'底特律活塞');
insert into nba values(2005,'圣安东尼奥马刺');
insert into nba values(2006,'迈阿密热火');
insert into nba values(2007,'圣安东尼奥马刺');
insert into nba values(2008,'波士顿凯尔特人');
insert into nba values(2009,'洛杉矶湖人');
insert into nba values(2010,'洛杉矶湖人');
insert into nba values(2011,'达拉斯小牛');
insert into nba values(2012,'迈阿密热火');
insert into nba values(2013,'迈阿密热火');
insert into nba values(2014,'圣安东尼奥马刺');
commit;

要求查询结果如下:
球队                开始年份    结束年份
明尼阿波利斯湖人    1949        1950
明尼阿波利斯湖人    1952        1954
波士顿凯尔特人      1959        1966
波士顿凯尔特人      1968        1969
洛杉矶湖人          1987        1988
底特律活塞          1989        1990
芝加哥公牛          1991        1993
休斯顿火箭          1994        1995
芝加哥公牛          1996        1998
洛杉矶湖人          2000        2002
洛杉矶湖人          2009        2010
迈阿密热火          2012        2013

SQL解法:


SELECT team ,min_y ,max_y  FROM  (SELECT TEAM,COUNT(1) AS cnt, MIN(Y) AS min_y, MAX(Y) AS max_y ,rn
  FROM (SELECT ROWNUM,
               NBA.Y,
               NBA.TEAM,
               ROWNUM - ROW_NUMBER() OVER(PARTITION BY TEAM ORDER BY Y) AS RN
          FROM NBA
         ORDER BY Y)GROUP BY team, rn  )WHERE cnt >1 ORDER  BY min_y ASC ;

效果图:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29507357/viewspace-1585137/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29507357/viewspace-1585137/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值