LetCode(180): 연속으로 나타나는 숫자Consecutive Numbers(SQL)

1050 단어 MysqlLeetCode
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 1시간, Copying 1초.감사합니다#

좋은 웹페이지 즐겨찾기