SQL OUTPUT PUZZLE | The Assignment Puzzle – ? | Advanced SQL
In this puzzle you have to go through the SQL statement given below and provide us the output without executing the SQL on SSMS or any other onsite SQL tool.
Script – DDL and INSERT Sample Data
-- CREATE TABLE TheAssignmentPuzzle ( Id INT ,Vals INT ) GO INSERT INTO TheAssignmentPuzzle VALUES (1,10), (2,20), (3,30) GO SELECT * FROM TheAssignmentPuzzle GO -- |
Input Data
Id | Vals |
---|---|
1 | 10 |
2 | 20 |
3 | 30 |
4 | 29 |
Q. What will be the Output of the below SQL Statement?
-- DECLARE @ INT SELECT @ = MAX(Vals) FROM TheAssignmentPuzzle GROUP BY Id SELECT @ GO -- |
Output
-- ----------- 29 (1 row affected) --The output I am getting is the last value of the Id --As per me it will give me the last maximum value for any Id -- |
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 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/ |
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
Hi,
Your code return a single value but below code gives subquery error,. So how variable works? Please explain it sir.
DECLARE @ INT
SET @ = (select MAX(Vals) FROM
TheAssignmentPuzzle GROUP BY Id)
SELECT @
LikeLike
The SQL “select MAX(Vals) FROM
TheAssignmentPuzzle GROUP BY Id” will return multiple values.
And we are trying to assign that to a variable using SET. If you use SET then you will get
“Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, , >= or when the subquery is used as an expression.
”
And if you are using SELECT instead of SET then you will get the last maximum value of an ID.
“DECLARE @ INT
SELECT @
= MAX(Vals) FROM
TheAssignmentPuzzle GROUP BY Id
SELECT @
GO”
OUTPUT -> 29 in this example.
LikeLike
I know the results and error. My question is what is the difference?
In your code, how it ignores other values? How it works? So can you say that if we try to return a single value from more than one value we have to use your format ?
LikeLike
I think correct code should be as below, because in that case GROUP BY doesn’t have a meaning. It just confusing.
DECLARE @ INT
SELECT @
= MAX(Vals) FROM
TheAssignmentPuzzle
SELECT @
LikeLike