多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 數(shù)據(jù)庫 > 數(shù)據(jù)庫應(yīng)用 > Consecutive Numbers

Consecutive Numbers

來源:程序員人生   發(fā)布時間:2015-08-19 08:28:07 閱讀次數(shù):3275次
    Write a SQL query to find all numbers that appear at least three times consecutively.

    +----+-----+
    | Id | Num |
    +----+-----+
    | 1  |  1  |
    | 2  |  1  |
    | 3  |  1  |
    | 4  |  2  |
    | 5  |  1  |
    | 6  |  2  |
    | 7  |  2  |
    +----+-----+
    For example, given the above Logs table, 1 is the only number that appears consecutively for at least three times.
    解法1:
    參考[Rank Scores](http://blog.csdn.net/havedream_one/article/details/45395063)
    從上往下對齊排名,如果相等,則排名相等,不相等則排名加1
    代碼以下:
    select num,@curRank := @curRank+IF(@preNum = num,0,1) as rank ,@preNum:=num from logs s,(select @curRank := 0) r,(select @preNum := null) p;
    +------+------+--------------+
    | num  | rank | @preNum:=num |
    +------+------+--------------+
    |    1 |    1 |            1 |
    |    1 |    1 |            1 |
    |    1 |    1 |            1 |
    |    2 |    2 |            2 |
    |    1 |    3 |            1 |
    |    2 |    4 |            2 |
    |    2 |    4 |            2 |
    +------+------+--------------+
    如上所示,如果1個num的連續(xù)排名超過3則符合題意。
    select num,count(rank) as count from (
        select num,@curRank := @curRank+IF(@preNum = num,0,1) as rank ,@preNum:=num from logs s,(select @curRank := 0) r,(select @preNum := null) p ) t 
        group by rank;
    +------+-------+
    | num  | count |
    +------+-------+
    |    1 |     3 |
    |    2 |     1 |
    |    1 |     1 |
    |    2 |     2 |
    +------+-------+
    得到上述的表以后,再使用having條件選擇。
    終究結(jié)果:
    select distinct num from(
        select num,count(rank) as count from (
            select num,@curRank := @curRank+IF(@preNum = num,0,1) as rank ,@preNum:=num from logs s,(select @curRank := 0) r,(select @preNum := null) p ) t 
            group by rank having count >= 3;
        ) tmp;
    解法2:
    1、從第1條記錄搜索,前后相同,count++,不相等,count=1;
    2、判斷,若rank大于3則符合題意
    select distinct num 
        from ( 
            select num,@curRank := @preRank+IF(@preNum = num,1,0),@preRank :=IF(@preNum = num,@curRank,1) as rank,@preNum := num 
                from Logs s,(select @preRank := 1) r,(select @preNum := null) p
        ) t 
        where rank >= 3;
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 精品国产亚洲一区二区在线3d | 久久久精品456亚洲影院 | 日韩 视频在线播放 | 成人免费视频在线看 | 一级成人a做片免费 | a级艳片武则天 | 手机看片成人 | 国产成人a福利在线观看 | 日本精品a在线 | 日本欧美不卡一区二区三区在线 | 欧美在线亚洲国产免m观看 欧美在线一二三 | 久久久久久一级毛片免费无遮挡 | 色黄网址 | 中文字幕中韩乱码亚洲大片 | 欧美一级毛片高清视频 | 久久精品精品 | 国产精品亚洲第五区在线 | 久久免费国产精品一区二区 | www.亚洲一区二区三区 | 在线视频综合视频免费观看 | 欧美国产三级 | 国内久久久久影院精品 | 日韩欧美视频 | 午夜三级成人三级 | 麻豆精品国产免费观看 | 亚洲看片网站 | 德国艳星videos极品 | 麻豆影 | 一本大道香蕉久在线不卡视频 | 日韩在线一区二区 | 免费网站www| 国产福利在线网址成人 | 亚洲色妞 | 成年人视频免费网站 | 日本一区二区在线视频 | 男女啪啪成人免费网站 | 欧美日韩一区二区三区四区在线观看 | 一本大道道无香蕉综合在线 | 黑人和黑人激情一级毛片 | 欧美一级视频在线高清观看 | 精品尤物 |