美文网首页编什么程
查找所有至少连续出现三次的数字-Leetcode每日一题

查找所有至少连续出现三次的数字-Leetcode每日一题

作者: 沙蒿同学 | 来源:发表于2019-01-20 21:59 被阅读2次

    周末不清闲的我,请了一天假来写毕业论文的开题报告,左改右改,删了又修,什么研究意义课题背景,对于我而已是那就是一件“如何把牛吹逼”的事情,好歹这逼吹得还好(呕心沥血)赢得了老师的认可,虽然我发现了一些小瑕疵,但老师还是给了我“内容充实、准确,态度认真”的认可。好吧,今天的内容还是关于sql查询语句,没错,还是那一道简单又不简单的sql。

    题目

    编写一个 SQL 查询,查找所有至少连续出现三次的数字。

    数据库表

    +----+-----+
    | Id | Num |
    +----+-----+
    | 1  |  1  |
    | 2  |  1  |
    | 3  |  1  |
    | 4  |  2  |
    | 5  |  1  |
    | 6  |  2  |
    | 7  |  2  |
    +----+-----+
    

    例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。

    +-----------------+
    | ConsecutiveNums |
    +-----------------+
    | 1               |
    +-----------------+
    

    知识点

    用户自定义变量

    待更新

    解法

    自关联,自连接

    select distinct l1.num ConsecutiveNums 
    from Logs l1 join Logs l2 on l1.id=l2.id-1 join Logs l3 on l1.id=l3.id-2 
    where l1.num=l2.num and l2.num=l3.num
    

    利用用户变量

    select distinct Num as ConsecutiveNums
    from (
      select Num, 
        case 
          when @prev = Num then @count := @count + 1
          when (@prev := Num) is not null then @count := 1
        end as CNT
      from Logs, (select @prev := null,@count := null) as t
    ) as temp
    where temp.CNT >= 3
    

    相关文章

      网友评论

        本文标题:查找所有至少连续出现三次的数字-Leetcode每日一题

        本文链接:https://www.haomeiwen.com/subject/vupfjqtx.html