LeetCode(180):连续出现的数字 Consecutive Numbers(SQL)

2020.4.9 LeetCode 从零单刷个人笔记整理(持续更新)

github:https://github.com/ChopinXBP/LeetCode-Babel

传送门:连续出现的数字

编写一个 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 AS 'ConsecutiveNums'
FROM Logs l1, Logs l2, Logs l3
WHERE l1.Id = l2.Id - 1
    AND l1.Id = l3.Id -2
    AND l1.Num = l2.Num
    AND l1.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


#Coding一小时,Copying一秒钟。留个言点个赞呗,谢谢你#

你可能感兴趣的:(Mysql,LeetCode)