SQL PUZZLE | Count records the where the Vals is decreased by more than 2 between current & previous records | SQL Interview Question

In this puzzle you have to count the number of records where the Vals is decreased by more than 2 between current & previous records. Please see the sample input and expected output.

Sample Input

Dt Vals
2015-09-13 16:11:00.000 10
2015-09-13 16:16:00.000 11
2015-09-13 16:21:00.000 12
2015-09-13 16:26:00.000 11
2015-09-13 16:31:00.000 9
2015-09-13 16:36:00.000 10
2015-09-13 16:41:00.000 12
2015-09-13 16:46:00.000 9
2015-09-13 16:46:00.000 3

Expected Output

Count
3

Script – DDL and INSERT Sample Data

 -- CREATE TABLE GetDiffOfTwo ( Dt DATETIME ,Vals INT ) GO INSERT INTO GetDiffOfTwo(Vals,dt) VALUES (10,'2015-09-13 16:11:00.000'), (11,'2015-09-13 16:16:00.000'), (12,'2015-09-13 16:21:00.000'), (11,'2015-09-13 16:26:00.000'), (9 ,'2015-09-13 16:31:00.000'), (10,'2015-09-13 16:36:00.000'), (12,'2015-09-13 16:41:00.000'), (9 ,'2015-09-13 16:46:00.000'), (3 ,'2015-09-13 16:46:00.000') GO SELECT * FROM GetDiffOfTwo GO --

SOLUTION – 1

 -- ;WITH CTE AS ( SELECT IIF(Vals- ISNULL(LAG(Vals) OVER (ORDER BY Dt ASC),Vals)<-1,1,0) cnt FROM GetDiffOfTwo ) SELECT SUM(cnt) [Count] FROM CTE --

Output – 1

 -- Count ----------- 3 (1 row affected) --

Enjoy 🙂

Pawan Khowal

Pawan is a SQL Server Developer. If you need any help in writing code/puzzle or training please email at – pawankkmr”AT”gmail.com. Meanwhile please go throgh the top pages from his blog.

Page Detail URL
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Perfomance tuning Articles https://msbiskills.com/sql-performance-tuning/
☛ SQL Server Articles https://msbiskills.com/t-sql/
☛ SQL Interview Questions & Answers https://msbiskills.com/sql-server-interview-questions/