数据库笔试


本帖最后由 kamanda 于 2012-7-30 09:32 编辑


如题
已知结果集如下(与实际nba数据不符请见谅,只为了测试用)
       TEAM    YEAR
1    活塞    1990
2    公牛    1991
3    公牛    1992
4    公牛    1993
5    火箭    1994
6    火箭    1995
7    公牛    1996
8    公牛    1997
9    公牛    1998
10    马刺    1999
11    湖人    2000
12    湖人    2001
13    湖人    2002

需要的结果是
    team    开始年份    结束年份
    公牛      1991         1993
    火箭      1994         1995
    公牛      1996         1998
    湖人      2000         2002

解释下: 就是求连续两次或以上夺冠的队伍的名称, 开始年份,和结束年份


-----------------------------------------------------------------------------------------------------
   附上成功运行的语句(表名nba,列名team,year):
1) 使用row_number函数的:
select team,min(year),max(year)
from (
       select nba.*,row_number() over(partition by nba.team order by nba.year)rn
       from nba)
group by team,year-rn
having count(*)>1
order by 2;
2)不使用函数的
select team,min(year) ,max(year)
from (
      select * from nba order by team,year)
group by team,year-rownum
having count(*)>1
order by 2;

猜你喜欢

转载自someoneneedsme.iteye.com/blog/2202493