0% found this document useful (0 votes)
2 views

SQL Scenario Based Questions

The document outlines various SQL topics and queries, including DDL and DML commands, CRUD operations, and advanced SQL functions such as joins, window functions, and aggregation. It provides examples of SQL queries to achieve specific outputs from given input tables, demonstrating the use of subqueries, CTEs, and string functions. The content is structured as a tutorial by Vishal Kaushal, focusing on practical SQL applications.

Uploaded by

Jainam Soni
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

SQL Scenario Based Questions

The document outlines various SQL topics and queries, including DDL and DML commands, CRUD operations, and advanced SQL functions such as joins, window functions, and aggregation. It provides examples of SQL queries to achieve specific outputs from given input tables, demonstrating the use of subqueries, CTEs, and string functions. The content is structured as a tutorial by Vishal Kaushal, focusing on practical SQL applications.

Uploaded by

Jainam Soni
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

• DDL , DML COMMANDS : CRUD operations

• PRACTICE SELECT STATEMENT


• FILTERS(HAVING, WHERE ,IN, NOT IN ,BETWEEN)
• AGGREGATION (GROUP BY, COUNT,SUM, MAX,
MIN,AVG)
• ORDER BY & WILDCARDs
• JOINS (INNER, LEFT, RIGHT, FULL , SELF , CROSS)
SQL TOPICS • WINDOWS FUNCTION
(RANK,ROW_NUMBER,DENSE_RANK,NTILE, CUME_DIST)
• CASE STATEMENT
• CTE,SUBQUERIES, TEMP TABLE ,RECURSIVE CTEs
• LEAD , LAG , FIRST VALUE , LAST VALUE
• STRING FUNCTIONS

SQL with VISHAL KAUSHAL


Q:We have one table sequence, write a SQL query to get the desired output.
Name Min_Seq Max_Seq
Name Sequence A 1 3
A 1 A 5 6
A 2 A 8 9
A 3 B 11 11
A 5 C 1 3
A 6
Select Name,MIN(sequence) as MIN_Seq,MAX(sequence) as
A 8 MAX_Seq from (
A 9 Select Name,sequence,sequence-ROW_NUMBER()over
B 11 (partition by name order by name) as diff
from #seq
C 1 group by name,sequence
C 2 )t
C 3 group by name,diff
order by name
SQL with VISHAL KAUSHAL
Q- Write a SQL query to get desired output .
Input table : Airport Output:-
SOURCE DESTINATION
SOURCE DESTINATION
DELHI MUMBAI
DELHI MUMBAI
DELHI PATNA
MUMBAI DELHI
BANGALORE PUNE
DELHI PATNA
CHANDIGARH CHENNAI
BANGALORE PUNE
PUNE MUMBAI
PUNE BANGALORE
GOA HYDERABAD
CHANDIGARH CHENNAI
PUNE MUMBAI
SELECT DISTINCT
HYDERABAD GOA
CASE WHEN SOURCE < DESTINATION THEN SOURCE ELSE
GOA HYDERABAD DESTINATION END AS SOURCE ,
CASE WHEN SOURCE > DESTINATION THEN SOURCE ELSE
DESTINATION END AS DESTINATION
FROM #AIRPORT
SQL with VISHAL KAUSHAL
Q: Write the SQL Query to get the desired output .
Input Table: Employee Output :
ID Name Salary Manager_Id Manager_id Manager Avg_salary_under_manager
10 Anil 50,000 18 16 Rajesh 65000
11 Vikas 75,000 16 17 Raman 62500
12 Nisha 40,000 18 18 Santosh 53750
13 Nidhi 60,000 17
14 Priya 80,000 18
15 Mohit 45,000 18 SELECT
A.MANAGER_ID,B.NAME,A.AVG_SALARY_UNDER_MANAGER
16 Rajesh 90,000 -
FROM #EMPLOYEE B JOIN
17 Raman 55,000 16 (
18 Santosh 65,000 17 SELECT MANAGER_ID , AVG(Salary) AS
AVG_SALARY_UNDER_MANAGER FROM #EMPLOYEE
GROUP BY MANAGER_ID ) A
ON B.ID=A.MANAGER_ID

SQL With VISHAL KAUSHAL


Q: Write a SQL query to get the desired output.
Input Table : Rough Desired Output:
Colum1 Column2
ID
1 1 10
2 2 9
3 3 8
4 SELECT T.ID AS COLUMN1,B.ID AS COLUMN2
FROM 4 7
5 (SELECT ID,ROW_NUMBER() OVER ( ORDER BY
5 6
6 ID ) AS ARN FROM #ROUGH A) T INNER JOIN
7 ( SELECT ID,ROW_NUMBER() OVER ( ORDER BY
ID DESC) AS BRN FROM #ROUGH B ) B
8 ON T.ARN=B.BRN
9 WHERE T.ID <B.ID
10

SQL with VISHAL KAUSHAL


Q: Write a SQL query to get desired output ?
Input Table : Salary Output :
ID Fname Lname Salary Fname Lname Salary
1 Vishal Kaushal 8000 Vishal Kaushal 12000
2 Akshay Kumar 9000 Akshay Kumar 9000

3 Zishan Khan 3000 Zishan Khan 8000


Katrina Kaif 10000
4 Khan Zishan 5000
5 Katrina Kaif 10000 SELECT FNAME,LNAME, S1+S2 AS TOTAL FROM (
SELECT A.ID,A.FNAME,A.LNAME, ISNULL(A.SALARY,0) AS
6 Kaushal Vishal 4000 S1,ISNULL(B.SALARY,0) AS S2,
CASE WHEN A.ID<B.ID THEN 1
WHEN A.ID>B.ID THEN 0
ELSE 1 END AS T
FROM #SALARY A
LEFT JOIN #SALARY B ON A.FNAME=B.LNAME AND A.LNAME=B.FNAME
) D
WHERE T=1
SQL with VISHAL KAUSHAL
• We have one table Demosales , write Sql query to get desired output.
Input :Demosales Desired Output :
OrderId ProdId Qty OrderId ProdId Count
O1 P1 5 O1 P1 1
O2 P2 1 O1 P1 1
O3 P3 3 O1 P1 1
O1 P1 1
WITH CTE (ORDERID,ProdId,QTY,ROWS) AS O1 P1 1
( SELECT ORDERID,ProdId,QTY, 1 FROM #demosales
O2 P2 1
UNION ALL
SELECT ORDERID,ProdId,QTY,ROWS+1 FROM CTE O3 P3 1
WHERE ROWS < QTY)
O3 P3 1
SELECT ORDERID , ProdId , 1 AS [Count] FROM CTE
ORDER BY ORDERID; O3 P3 1

SQL with VISHAL KAUSHAL


Q: Write a SQL query to get the Desired output from Input Table.
Input Table: Employee Output :
Empi Name Gender Department Department TotalMale TotalFemale
d Finance 1 2
1 Alexa Female IT HR 1 3
2 Naman Male Finance IT 2 1
3 Rita Female Finance
4 Priya Female HR
SELECT DEPARTMENT , SUM(CASE WHEN GENDER ='MALE'
5 Shivangi Female HR
THEN 1 ELSE 0 END) AS TOTALMALE,
6 Rahul Male IT SUM(CASE WHEN GENDER ='FEMALE' THEN 1 ELSE 0 END)
7 Tanya Female Finance AS TOTALFEMALE
FROM #EMPLOYEE
8 Arun Male HR
GROUP BY DEPARTMENT
9 Lakshya Male IT
10 Deepika Female HR

SQL with VISHAL KAUSHAL


Q: Write a SQL query to get the desired output (missing number from the input series)
Input :Missing_rows Output :
Seq
ID
2
1
7
3
8
4 WITH CTE 10
AS
5 11
(SELECT 1 AS SEQ ,( SELECT MAX(ID) FROM #MISSING_ROWS)AS
6 MAXSEQ
UNION ALL
9
SELECT SEQ+1 ,MAXSEQ FROM CTE WHERE SEQ < MAXSEQ )
12 SELECT SEQ FROM CTE WHERE SEQ NOT IN (SELECT ID FROM
#MISSING_ROWS)
Q: Write the SQL query to get the desired output.
Input Table: Gender Output :
ID Name Gender ID Name Gender
1 Anita Male 1 Anita Female
2 Rakesh Female 2 Rakesh Male
3 Arjun Female 3 Arjun Male
4 John Female 4 John Male
5 Deepika Male 5 Deepika Female
6 Shivani Male 6 Shivani Female
Select ID,NAME, CASE WHEN GENDER='MALE' THEN 'FEMALE'
WHEN GENDER='Female' THEN 'MALE' END AS GENDER from
#gender – Select records

--Update table
Update #gender
Set Gender =(CASE WHEN GENDER='MALE' THEN 'FEMALE'
WHEN GENDER='Female' THEN 'MALE' END ) SQL with VISHAL KAUSHAL
ID
Q: Write the SQL query to get the desired output. 0
Input Table A, B Desired Output: 0
ID ID 0
1 1 0
1 1 SELECT * FROM #B WHERE ID NOT IN (SELECT ID 0
1 1 FROM #A) 1
1 1 UNION ALL 1
SELECT * FROM #B WHERE ID IN (SELECT ID FROM #A)
1 1 UNION ALL 1
2 0 SELECT * FROM #A WHERE ID NOT IN (SELECT ID FROM 1
#B) 1
2 0
2 0 2
2 0 2
2 0 2
2
SQL with VISHAL KAUSHAL 2
Q: Write SQL query to get the max value from Rows?
Input Table : Maxrows Output:
Name Amount1 Amount2 Amount3 Name MaxAmt
Vishal 5000 6800 4300 Vishal 6800
Rahul 3500 1000 2200 Rahul 3500
Simran 9800 9999 9990 Simran 9999
Sukarn 5600 7757 8897 Sukarn 8897
Vijay 6647 9898 10000 Vijay 10000

Select Name,Max(AMT) as Maxamt from (


SELECT Name,
Select Name,Amount1 AS AMT from #maxrow
(SELECT MAX(Amount)
union all
FROM (VALUES
Select Name,amount2 from #maxrow
(Amount1),(Amount2),(Amount3)) AS
union all
A(Amount)) AS Maxamt
Select name,amount3 from #maxrow ) A
FROM #maxrow
group by Name

SQL with VISHAL KAUSHAL


Q: Write SQL query to get desired output.
Input Table : Teams Output:
Matches
Teamname
AUSTRALIA – INDIA
INDIA AUSTRALIA – NEWZEALAND
AUSTRALIA AUSTRALIA – ENGLAND
ENGLAND ENGLAND- INDIA
ENGLAND – NEWZEALAND
NEWZEALAND
INDIA - NEWZEALAND

Select CONCAT(A.Teamname,' - ',B.Teamname) As MATCHES from #teams


A,#teams B
where A.teamname <B.teamname
order by A.Teamname

SQL with VISHAL KAUSHAL


Q: Write the SQL query to get the desired Output ?
Input Table : Name Output :
ID Name NAME
1 VISHAL VISHAL
2 VISHAL KAUSHAL
3 VISHAL VISHAL
4 KAUSHAL KAUSHAL
5 KAUSHAL VISHAL
6 KAUSHAL KAUSHAL
WITH CTE AS (
Select Name,ROW_NUMBER() over (Partition by Name
order by name) as RN
from #ab
)
select Name from CTE order by RN,NAME desc
SQL WITH VISHAL KAUSHAL
Q: Write SQL query to get the desired output.
Input Table : Attendance Output:
Date Attendance Date Present count

2021-07-01 1,2,3,4,6 2021-07-01 5


2021-07-02 4
2021-07-02 1,3,4,5
2021-07-03 6
2021-07-03 1,2,3,4,5,6
2021-07-04 3
2021-07-04 1,2,5

Select Date, LEN(Attendance)-LEN(REPLACE(Attendance,',',''))+1


as [Present count] from #attendance

SQL WITH VISHAL KAUSHAL


Q: Write a SQL query to get the desired output? (Cumulative difference)
Input Table : ABCD
ID Date Amount
WITH CTE AS (
1 2019-07-01 100 SELECT TOP 1 RN,DATE,TOTAL,TOTAL AS DIFFERENCE FROM
2 2019-07-01 120 (SELECT DATE,SUM(AMOUNT) OVER (PARTITION BY DATE ORDER
3 2019-07-01 110 BY DATE ) AS TOTAL,
DENSE_RANK() OVER (ORDER BY DATE ) AS RN
4 2019-07-02 160 FROM #ABCD ) A
5 2019-07-02 700 UNION ALL
6 2019-07-03 200 SELECT A.RN, A.DATE, A.TOTAL, A.TOTAL - CTE.DIFFERENCE
FROM (SELECT DATE,SUM(AMOUNT) OVER (PARTITION BY DATE
7 2019-07-03 50 ORDER BY DATE ) AS TOTAL,
DENSE_RANK() OVER (ORDER BY DATE ) AS RN
Output: FROM #ABCD ) A INNER JOIN CTE
Date Difference ON A.RN-1= CTE.RN
)
2019-07-01 330 SELECT DISTINCT DATE,DIFFERENCE FROM CTE
2019-07-02 530
2019-07-03 -280 SQL WITH VISHAL KAUSHAL
Q: Write a SQL query to get the nodes of BINARY tree ?
Input Table : Binary 5 Output:
Node Type
Node Parent
1 2 1 Leaf
2 8
3 2 2 Inner
6 8 3 Leaf
9 8 1 3 6 9 5 Root
2 5
6 Leaf
8 5
Select Distinct A.node,
5 Null CASE WHEN B.Node is null THEN 'LEAF' 8 Inner
WHEN A.parent is null THEN 'ROOT' 9 Leaf
ELSE 'INNER' END as node from #binary A
left join #binary B
on A.node=B.parent

SQL with VISHAL KAUSHAL


Q: Write a SQL query to get desired output ?
Input Table : Salary Output :
ID Fname Lname Salary Fname Lname Salary
1 Vishal Kaushal 8000 Vishal Kaushal 12000
2 Akshay Kumar 9000 Akshay Kumar 9000

3 Zishan Khan 3000 Zishan Khan 8000


Katrina Kaif 10000
4 Khan Zishan 5000
5 Katrina Kaif 10000 SELECT FNAME,LNAME, S1+S2 AS TOTAL FROM (
SELECT A.ID,A.FNAME,A.LNAME, ISNULL(A.SALARY,0) AS
6 Kaushal Vishal 4000 S1,ISNULL(B.SALARY,0) AS S2,
CASE WHEN A.ID<B.ID THEN 1
WHEN A.ID>B.ID THEN 0
ELSE 1 END AS T
FROM #SALARY A
LEFT JOIN #SALARY B ON A.FNAME=B.LNAME AND A.LNAME=B.FNAME
) D
WHERE T=1
SQL with VISHAL KAUSHAL
Q: Write the SQL query to get desired output.
Input table : Employee Output:

With CTE As
Table : Month (
Select distinct
A.Empid,A.Name,B.Monthname,B.Monthid from #employee
A , #month B
)
Select C.EMPID,C.NAME,Monthname,E.Bonus from CTE C
left join #employee E
on C.EMpid=E.empid
and C.MOnthid=E.monthid
order by EMPID,C.Monthid

SQL WITH VISHAL KAUSHAL

You might also like