成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL如何求解連續年份的問題?

數據庫
請寫出一條 SQL 語句,查詢出在此期間連續獲得冠軍的有哪些,其連續的年份的起止時間是多少?

[[414963]]

本文轉載自微信公眾號「SQL數據庫開發」,作者丶平凡世界。轉載本文請聯系SQL數據庫開發公眾號。

最近看到這樣一道題目,覺得挺有意思,給小伙伴們分享一下解題思路。

下表記錄了奪冠球隊的名稱及年份:

請寫出一條 SQL 語句,查詢出在此期間連續獲得冠軍的有哪些,其連續的年份的起止時間是多少?

查詢結果:

之前我們有講解如何求解連續多少天的問題,這個題有點類似,但是也有點不一樣的地方。

問題分析

一般連續性的問題,我們都需要使用笛卡爾積進行錯位匹配,就是類似a.ID=b.ID+1的這種。這一題我們也可以使用類似的方法。

具體代碼如下:

  1. CREATE TABLE  #t(TEAM varchar(20), Y int
  2. INSERT #t(TEAM,Y)  VALUES 
  3. ('活塞',1990), 
  4. ('公牛',1991), 
  5. ('公牛',1992), 
  6. ('公牛',1993), 
  7. ('火箭',1994), 
  8. ('火箭',1995), 
  9. ('公牛',1996), 
  10. ('公牛',1997), 
  11. ('公牛',1998), 
  12. ('馬刺',1999), 
  13. ('湖人',2000), 
  14. ('湖人',2001), 
  15. ('湖人',2002), 
  16. ('馬刺',2003), 
  17. ('活塞',2004), 
  18. ('馬刺',2005), 
  19. ('熱火',2006), 
  20. ('馬刺',2007), 
  21. ('凱爾特人',2008), 
  22. ('湖人',2009), 
  23. ('湖人',2010); 
  24.  
  25. SELECT RN=IDENTITY(INT),* INTO #a FROM #t ORDER BY TEAM,Y 
  26.  
  27.    SELECT a.TEAM, 
  28.    MIN(a.Y) B, 
  29.    MAX(a.Y) E 
  30.    FROM #a a 
  31.    WHERE EXISTS( 
  32.      SELECT 1 FROM #a 
  33.      WHERE TEAM=a.TEAM 
  34.      AND (Y=a.Y-1 OR a.Y=Y-1) 
  35.    ) 
  36.    GROUP BY a.TEAM,Y-RN 
  37.  
  38. DROP TABLE #t,#a 

解答的結果如下:

我們對上面的解法進行解讀一下:

首先是給這些數據添加一列自增長的RN列并插入到新的臨時表#a并且對TEAM和Y排序。

其次是將#a進行自匹配,匹配的條件是TEAM名稱相同(TEAM=a.TEAM),并且年份Y與前后的年份進行匹配(Y=a.Y-1 OR a.Y=Y-1)。

這個匹配是精妙地方之一,這樣就可以判定該球隊前后幾年的年份是否連續的。

如果球隊名相同的前提下,年份連續,就滿足這個條件;

如果年份連續,但是球隊名不相同,就不滿足這個條件了。

最后在進行分組的時候,不僅對球隊TEAM進行了分組,而且還對Y-RN進行了分組。為什么要對Y-RN進行分組呢?

如果去掉這個條件,我們發現如下情形:

公牛和湖人中間間隔了幾年才重新連續奪冠,但是這里因為沒有對Y-RN進行分組,導致這個球隊和奪冠年份在進行匹配時都滿足了。因為#a表中的內容實際上是這樣的,

 

Y=a.Y-1 OR a.Y=Y-1只要有一個滿足即可判斷是連續的年份,實際上經過我們處理后確實滿足上述條件,所以需要加上Y-RN進行第二次分組來判斷中間是否有間隔的年份。因為如果有間隔,那么Y-RN就不是同一個值了。

 

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2023-11-02 08:38:49

遞歸SQL用法

2021-11-03 16:00:40

SQL流量序號

2021-04-06 11:50:30

SQL數據統計

2021-01-05 08:12:42

SQL日期Spt

2010-06-11 09:13:20

openSUSE 網卡

2010-06-11 13:05:41

openSUSE視頻

2010-06-09 13:03:00

Opensuse分區

2010-06-11 16:33:21

openSUSE fl

2011-05-17 13:22:50

SQL對象名無效

2010-09-26 17:14:23

SQL查詢

2009-04-23 09:11:49

職場IT人求職

2018-09-20 11:54:31

數據庫MySQL性能優化

2011-12-19 14:22:36

云計算虛擬化

2010-09-24 15:46:23

SQL查詢

2011-04-25 14:51:24

2017-05-22 15:23:46

PUE監測數據中心

2017-07-26 21:54:59

2010-11-10 10:09:40

2021-04-25 09:42:40

SQL遞歸SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片一区二区三区 | 久久久久久久久久一区二区 | 美女在线观看国产 | 日韩精品免费 | 欧美黄色绿像 | av手机免费在线观看 | 国产一区二区三区四区区 | 黄色av网站在线观看 | 精品视频在线观看 | 亚洲国产成人精品女人久久久 | 日韩中文字幕视频 | 日韩蜜桃视频 | 久久精品一| 一区二区高清 | 午夜极品 | 天天碰日日操 | 久久久这里都是精品 | 欧产日产国产精品视频 | 久久久男人的天堂 | 狠狠爱免费视频 | 亚洲一区二区三区在线 | 日屁网站 | 日韩精品一区二区三区四区 | 91久久久久久 | www.一区二区 | 久日精品| 国产一区二 | 视频一区中文字幕 | 日韩精品亚洲专区在线观看 | 武道仙尊动漫在线观看 | japan21xxxxhd美女 日本欧美国产在线 | 91 在线 | 亚洲成人中文字幕 | 国产精品明星裸体写真集 | 日本黄色一级视频 | 青青久在线视频 | 国产激情在线观看 | 精品久久久久久一区二区 | 欧美人妇做爰xxxⅹ性高电影 | 国产一区二区三区四区 | 国产高清免费在线 |