From d29b7448b40557bd362af481351ec2441c370882 Mon Sep 17 00:00:00 2001 From: Vikas Chitturi - Open Source Contributor Date: Sun, 9 Jun 2024 18:01:04 +0530 Subject: [PATCH] Medium LC Problem = ConsecutiveNumbers.sql --- LeetCode/SQL50/ConsecutiveNumbers.sql | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 LeetCode/SQL50/ConsecutiveNumbers.sql diff --git a/LeetCode/SQL50/ConsecutiveNumbers.sql b/LeetCode/SQL50/ConsecutiveNumbers.sql new file mode 100644 index 0000000..7042380 --- /dev/null +++ b/LeetCode/SQL50/ConsecutiveNumbers.sql @@ -0,0 +1,56 @@ +-- Table: Logs + +-- +-------------+---------+ +-- | Column Name | Type | +-- +-------------+---------+ +-- | id | int | +-- | num | varchar | +-- +-------------+---------+ +-- In SQL, id is the primary key for this table. +-- id is an autoincrement column. + +-- Find all numbers that appear at least three times consecutively. + +-- Return the result table in any order. + +-- The result format is in the following example. + +-- Example 1: + +-- Input: +-- Logs table: +-- +----+-----+ +-- | id | num | +-- +----+-----+ +-- | 1 | 1 | +-- | 2 | 1 | +-- | 3 | 1 | +-- | 4 | 2 | +-- | 5 | 1 | +-- | 6 | 2 | +-- | 7 | 2 | +-- +----+-----+ +-- Output: +-- +-----------------+ +-- | ConsecutiveNums | +-- +-----------------+ +-- | 1 | +-- +-----------------+ +-- Explanation: 1 is the only number that appears consecutively for at least three times. + +-- Write your PostgreSQL query statement below +-- Solution +with computed_tb as ( + select X.id Xid, + X.num Xnum, + Y.id Yid, + Y.num Ynum, + Y.id - X.id as diff + from Logs X cross join Logs Y + where Y.id - X.id in (1) and X.num = Y.num +) +select distinct A.Xnum as ConsecutiveNums +from computed_tb A join computed_tb B on (A.Xid = B.Yid) +where A.Xnum in ( + select Xnum from computed_tb group by Xnum having count(Xnum) >= 2 +)