Tags

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,


SQL Puzzle | The NOT in Range Puzzle – SINGLE SELECT | SQL Interview Question

In this puzzle you have to JOIN the two tables based on Gr column and figure out whether the val colum’s value is present between the startlimit and the endlimit columns. If not then we need that rows in the Output. Please check out the sample input and the expected output.

Sample Input

Table 1 –

Id Gr Val
1 a 10
2 b 15
3 c 45

Table 2 –

Gr StartLimit EndLimit
a 0 9
a 20 100
b 10 14
b 20 100
c 10 50

Expected Output

Id Gr Val
1 a 10
1 a 10
2 b 15
2 b 15

Script – DDL and INSERT Sample Data

--

CREATE TABLE Prima
(
	 Id INT
	,Gr VARCHAR(10)
	,Val INT
)
GO

INSERT INTO Prima VALUES 
(1,'a',10),
(2,'b',15),
(3,'c',45)

CREATE TABLE Limits
(
	 Gr VARCHAR(10)
	,StartLimit INT
	,EndLimit INT
)
GO

INSERT INTO Limits VALUES 
('a',0,9),
('a',20,100),
('b',10,14),
('b',20,100),
('c',10,50)
GO

--

SOLUTION 1

--

SELECT P.* FROM Prima P
JOIN Limits L ON NOT ( P.Val BETWEEN L.StartLimit AND L.EndLimit )
AND P.Gr = L.Gr

--

OUTPUT – 1

--

Id          Gr         Val
----------- ---------- -----------
1           a          10
1           a          10
2           b          15
2           b          15

(4 rows affected)

--

SOLUTION 2

--

SELECT P.* FROM Prima P
JOIN Limits L ON P.Val NOT BETWEEN L.StartLimit AND L.EndLimit
AND P.Gr = L.Gr


--

OUTPUT – 2

--

Id          Gr         Val
----------- ---------- -----------
1           a          10
1           a          10
2           b          15
2           b          15

(4 rows affected)


--

SOLUTION 3

--

SELECT * 
FROM Prima v
WHERE NOT EXISTS (SELECT NULL FROM Limits r
                  WHERE v.Gr = r.Gr AND
                  v.Val BETWEEN r.StartLimit AND r.EndLimit)

--

OUTPUT – 3

--

Id          Gr         Val
----------- ---------- -----------
1           a          10
1           a          10
2           b          15
2           b          15

(4 rows affected)


--

Enjoy 🙂

Please add comment(s) if you have one or multiple solutions in mind. Thank You.

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 Advance Puzzles https://msbiskills.com/tsql-puzzles-asked-in-interview-over-the-years/
☛ SQL Tricky Queries https://msbiskills.com/sql-puzzles-finding-outputs/
☛ SQL Server Performance 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/

My SQL Groups on Facebook:

1. If you like this post, you may want to join my SQL SERVER Interview Puzzles/Interview Questions on Facebook: https://www.facebook.com/groups/1430882120556342/

2. If you like this post, you may want to join my SQL Server Puzzles on Facebook:
https://www.facebook.com/groups/206594023090781/

My SQL Page on Facebook:

2. For all the updates you may follow my page -> https://www.facebook.com/MSBISkillscom-1602779883299222/

Enjoy !!! Keep Learning

Http://MsbiSkills.com