zoukankan      html  css  js  c++  java
  • SQL查询连续年份

    有这样一个问题,给出一个表格记录了夺冠球队的名称和年份,我们要做的就是写出一条SQL语句,查询再次期间连续夺冠的有哪些,起止时间是什么

    下边是代码

    create table #t(TEAM vaarchar(20), Y int)
    insert #t(TEAM,Y) VALUES
    ('活塞',1990),
    ('公牛',1991),
    ('公牛',1992),
    ('公牛',1993),
    ('火箭',1994),
    ('火箭',1995),
    ('公牛',1996),
    ('公牛',1997),
    ('公牛',1998),
    ('马刺',1999),
    ('湖人',2000),
    ('湖人',2001),
    ('湖人',2002),
    ('马刺',2003),
    ('活塞',2004),
    ('马刺',2005),
    ('热火',2006),
    ('马刺',2007),
    ('凯尔特人',2008),
    ('湖人',2009),
    ('湖人',2010);


    SELECT RN=IDENTITY(INT),* INTO #a FROM #t ORDER BY TEAM,Y
    SELECT a.TEAM,
    MIN(a.Y) B,
    MAX(a.Y) E,
    FROM #a a
    WHERE EXISTS(
    SELECT 1 FROM #a
    WHERE TEAM=a.TEAM
    AND (Y=a.Y-1 OR a.Y=Y-1)
    )
    GROUP BY a.TEAM,Y-RN

    DROP TABLE #t,#a

    那现在做些解释

     1、给这些数据添加一列自增长的RN列并插入到新的临时表#a并且对TEAM和Y排序

     2、将#a进行自匹配,匹配的条件是TEAM名称形同(TEAM=a.TEAM),并且年份Y与前后的年份进行匹配(Y=a.Y-1 OR a.Y=Y-1)

     3、最关键的就是这个匹配的规则,在球队名相同的前提下,年份连续才满足条件

     4、在最后不仅对球队TEAM进行了分组,还对Y-RN进行分组,如果年份有间隔,那么Y-RN就不是同一个值

  • 相关阅读:
    用RBG颜色设置自定义颜色
    Swift UI
    SVN上传代码时代码失败
    coredata中谓词的使用
    Core Data的使用(二)备
    CoreData (四)备
    CoreData (三)备
    CI框架篇之模型篇--直接操作(2)
    CI框架篇之模型篇--初识(1)
    CI框架篇之视图篇--载入(1)
  • 原文地址:https://www.cnblogs.com/john4415/p/11344618.html
Copyright © 2011-2022 走看看