Nested CASE expressions in SQL - Time & Space Complexity
We want to understand how the time it takes to run nested CASE expressions changes as the data grows.
Specifically, how does adding more rows affect the work done inside these CASE statements?
Analyze the time complexity of the following code snippet.
SELECT
employee_id,
salary,
CASE
WHEN salary > 70000 THEN
CASE
WHEN department = 'Sales' THEN 'High Sales'
ELSE 'High Other'
END
ELSE 'Low'
END AS salary_category
FROM employees;
This query classifies employees into salary categories using nested CASE expressions.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The database checks each row in the employees table once.
- How many times: Once per row, applying the nested CASE logic.
As the number of employees grows, the database runs the CASE checks for each employee.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 checks |
| 100 | About 100 checks |
| 1000 | About 1000 checks |
Pattern observation: The work grows directly with the number of rows, even with nested CASE expressions.
Time Complexity: O(n)
This means the time to run the query grows in a straight line as the number of rows increases.
[X] Wrong: "Nested CASE expressions multiply the time by the number of nested levels."
[OK] Correct: The nested CASE runs inside the check for each row, but it does not multiply the total work by nesting depth. It still processes each row once.
Understanding how nested CASE expressions scale helps you explain query performance clearly and confidently in real situations.
"What if we added a JOIN to another large table inside the query? How would the time complexity change?"
Practice
nested CASE expressions in SQL?Solution
Step 1: Understand the role of CASE expressions
CASE expressions allow conditional logic to return different values based on conditions.Step 2: Recognize nested CASE usage
Nested CASE means putting one CASE inside another to check conditions within conditions for more detailed categorization.Final Answer:
To check multiple conditions inside another condition for detailed results -> Option AQuick Check:
Nested CASE = detailed condition checks [OK]
- Confusing CASE with JOIN operations
- Thinking CASE creates or deletes tables
- Ignoring the need to close each CASE with END
Solution
Step 1: Review correct CASE syntax
CASE expressions use WHEN ... THEN ... ELSE ... END structure; nested CASE must follow this pattern inside THEN.Step 2: Identify correct nested CASE
CASE WHEN condition1 THEN CASE WHEN condition2 THEN result1 ELSE result2 END ELSE result3 END correctly nests a CASE inside THEN with proper WHEN, THEN, ELSE, and END keywords.Final Answer:
CASE WHEN condition1 THEN CASE WHEN condition2 THEN result1 ELSE result2 END ELSE result3 END -> Option DQuick Check:
Nested CASE syntax = CASE WHEN condition1 THEN CASE WHEN condition2 THEN result1 ELSE result2 END ELSE result3 END [OK]
- Using IF instead of CASE inside SQL
- Missing END keyword for inner CASE
- Incorrect keyword order in nested CASE
Employees with column Salary, what will this query return?SELECT Salary, CASE WHEN Salary > 70000 THEN CASE WHEN Salary > 90000 THEN 'High' ELSE 'Medium' END ELSE 'Low' END AS SalaryLevel FROM Employees;
Solution
Step 1: Analyze outer CASE condition
If Salary > 70000, then check inner CASE; else label 'Low'.Step 2: Analyze inner CASE condition
Inside outer WHEN true, if Salary > 90000 then 'High', else 'Medium'.Final Answer:
Labels salaries above 90000 as 'High', between 70001 and 90000 as 'Medium', others as 'Low' -> Option BQuick Check:
Nested CASE categorizes salary levels correctly [OK]
- Ignoring inner CASE and labeling all above 70000 as same
- Confusing syntax causing errors
- Misreading comparison operators
SELECT CASE WHEN score > 80 THEN CASE score > 90 THEN 'Excellent' ELSE 'Good' END ELSE 'Average' END AS Grade FROM Results;
Solution
Step 1: Check inner CASE syntax
Inner CASE lacks WHEN before condition; it should be 'CASE WHEN score > 90 THEN ...'Step 2: Verify overall CASE structure
Outer CASE has proper WHEN and END; error is only in inner CASE missing WHEN keyword.Final Answer:
Missing WHEN keyword before inner condition -> Option CQuick Check:
Inner CASE needs WHEN before condition [OK]
- Forgetting WHEN in inner CASE
- Assuming END is missing when it is present
- Misplacing ELSE inside CASE
Price and Stock using nested CASE. If Price > 100 and Stock > 50, label 'Premium-Available'. If Price > 100 and Stock ≤ 50, label 'Premium-Limited'. Otherwise, label 'Standard'. Which SQL snippet correctly implements this?Solution
Step 1: Understand the nested conditions
First check if Price > 100, then inside check Stock > 50 or not.Step 2: Match correct syntax and logic
CASE WHEN Price > 100 THEN CASE WHEN Stock > 50 THEN 'Premium-Available' ELSE 'Premium-Limited' END ELSE 'Standard' END correctly nests CASE inside THEN with proper WHEN, THEN, ELSE, and END keywords matching the problem.Final Answer:
CASE WHEN Price > 100 THEN CASE WHEN Stock > 50 THEN 'Premium-Available' ELSE 'Premium-Limited' END ELSE 'Standard' END -> Option AQuick Check:
Nested CASE matches Price then Stock checks [OK]
- Using AND instead of nested CASE
- Missing WHEN in inner CASE
- Incorrect ELSE placement
Ready to prove it?
Pass the test and this pattern moves unknown
