本帖最后由 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;
如题
已知结果集如下(与实际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;