当前位置: 代码迷 >> Oracle开发 >> 求教怎么写这条sql
  详细解决方案

求教怎么写这条sql

热度:82   发布时间:2016-04-24 06:54:46.0
求教如何写这条sql
、表nba记录了nba(team  VARCHAR2(10),y NUMBER(4))夺冠球队的名称及年份:
TEAM                 Y
-------------------- ------------------------------
活塞                 1990
公牛                 1991
公牛                 1992
公牛                 1993
火箭                 1994
火箭                 1995
公牛                 1996
公牛                 1997
公牛                 1998
马刺              1999
湖人                 2000
湖人                 2001
湖人                 2002
马刺                2003
活塞                 2004
马刺               2005
热火                 2006
马刺               2007
凯尔特人             2008
湖人                 2009
湖人                 2010

请写出一条SQL语句,查询出在此期间连续获得冠军的有哪些,其连续的年份的起止时间是多少,结果如下:

TEAM               B          E
-------------------- ---------- --------------------------------
公牛                 1991       1993
火箭                 1994       1995
公牛                 1996       1998

------解决方案--------------------


SELECT team,
  B,
  E
FROM
  (SELECT team,
    rk,
    MIN(y) b,
    MAX(y) e
  FROM
    (SELECT team,
      y,
      y - row_number() over(partition BY team order by y ASC) rk
    FROM nba
    )
  GROUP BY team,
    rk
  HAVING COUNT(1)>1
  )



------解决方案--------------------
利用排序方式的差值 来计算是否连续 


with t1 as
(
     select '活塞' TEAM,1990 Y from dual union all
     select '公牛' TEAM,1991 Y from dual union all
     select '公牛' TEAM,1992 Y from dual union all
     select '公牛' TEAM,1993 Y from dual union all
     select '火箭' TEAM,1994 Y from dual union all
     select '火箭' TEAM,1995 Y from dual union all
     select '公牛' TEAM,1996 Y from dual union all
     select '公牛' TEAM,1997 Y from dual union all
     select '公牛' TEAM,1998 Y from dual union all
     select '马刺' TEAM,1999 Y from dual union all
     select '湖人' TEAM,2000 Y from dual 
  相关解决方案