From 3a81ec9e8fcc656c8df7a6a68f9dc1d4e632a608 Mon Sep 17 00:00:00 2001 From: kamyu Date: Tue, 13 Jan 2015 13:12:16 +0800 Subject: [PATCH] Create consecutive-numbers.sql add new solution --- MySQL/consecutive-numbers.sql | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 MySQL/consecutive-numbers.sql 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