diff --git a/MySQL/consecutive-numbers.sql b/MySQL/consecutive-numbers.sql new file mode 100644 index 000000000..e55f8c339 --- /dev/null +++ b/MySQL/consecutive-numbers.sql @@ -0,0 +1,31 @@ +# Time: O(n) +# Space: O(n) +# +# 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. +# + +# Write your MySQL query statement below +SELECT DISTINCT(Num) AS ConsecutiveNums +FROM ( + SELECT + Num, + @counter := IF(@prev = Num, @counter + 1, 1) AS how_many_cnt_in_a_row, + @prev := Num + FROM + Logs y + , (SELECT @counter:=1, @prev:=NULL) vars +) sq +WHERE how_many_cnt_in_a_row >= 3