0
0
SQLquery~20 mins

CASE in SELECT for computed columns in SQL - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
CASE Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Output of CASE in SELECT for grade classification
Given the table Students with columns id, name, and score, what is the output of this query?
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM Students
ORDER BY id;
SQL
CREATE TABLE Students (id INT, name VARCHAR(20), score INT);
INSERT INTO Students VALUES (1, 'Alice', 85), (2, 'Bob', 92), (3, 'Charlie', 68);
A[{"name": "Alice", "grade": "B"}, {"name": "Bob", "grade": "A"}, {"name": "Charlie", "grade": "F"}]
B[{"name": "Alice", "grade": "C"}, {"name": "Bob", "grade": "B"}, {"name": "Charlie", "grade": "F"}]
C[{"name": "Alice", "grade": "B"}, {"name": "Bob", "grade": "A"}, {"name": "Charlie", "grade": "C"}]
D[{"name": "Alice", "grade": "A"}, {"name": "Bob", "grade": "A"}, {"name": "Charlie", "grade": "F"}]
Attempts:
2 left
💡 Hint
Remember the CASE checks conditions in order and stops at the first true condition.
📝 Syntax
intermediate
1:30remaining
Identify the syntax error in CASE usage
Which option contains a syntax error in the CASE expression used in a SELECT statement?
SQL
SELECT id, name, CASE score WHEN score >= 90 THEN 'A' ELSE 'F' END AS grade FROM Students;
ASELECT id, name, CASE score WHEN score >= 90 THEN 'A' ELSE 'F' END AS grade FROM Students;
BSELECT id, name, CASE WHEN score >= 90 THEN 'A' ELSE 'F' END AS grade FROM Students;
CSELECT id, name, CASE WHEN score >= 90 THEN 'A' ELSE 'F' END grade FROM Students;
D;stnedutS MORF edarg SA DNE 'F' ESLE 'A' NEHT 09 => erocs NEHW ESAC ,eman ,di TCELES
Attempts:
2 left
💡 Hint
Check the syntax of CASE with and without an expression after CASE keyword.
query_result
advanced
2:30remaining
Result of nested CASE expressions in SELECT
Consider the table Orders with columns order_id, amount, and status. What is the output of this query?
SELECT order_id,
CASE
WHEN status = 'shipped' THEN 'Completed'
WHEN status = 'pending' THEN CASE WHEN amount > 100 THEN 'High Pending' ELSE 'Low Pending' END
ELSE 'Unknown'
END AS order_status
FROM Orders
ORDER BY order_id;
SQL
CREATE TABLE Orders (order_id INT, amount INT, status VARCHAR(10));
INSERT INTO Orders VALUES (1, 150, 'pending'), (2, 50, 'pending'), (3, 200, 'shipped'), (4, 30, 'cancelled');
A[{"order_id":1,"order_status":"Low Pending"},{"order_id":2,"order_status":"High Pending"},{"order_id":3,"order_status":"Completed"},{"order_id":4,"order_status":"Unknown"}]
B[{"order_id":1,"order_status":"High Pending"},{"order_id":2,"order_status":"Low Pending"},{"order_id":3,"order_status":"Unknown"},{"order_id":4,"order_status":"Unknown"}]
C[{"order_id":1,"order_status":"Completed"},{"order_id":2,"order_status":"Low Pending"},{"order_id":3,"order_status":"Completed"},{"order_id":4,"order_status":"Unknown"}]
D[{"order_id":1,"order_status":"High Pending"},{"order_id":2,"order_status":"Low Pending"},{"order_id":3,"order_status":"Completed"},{"order_id":4,"order_status":"Unknown"}]
Attempts:
2 left
💡 Hint
Look carefully at the nested CASE inside the WHEN status = 'pending' condition.
optimization
advanced
1:30remaining
Optimizing CASE expressions for performance
Which option is the most efficient way to write a CASE expression that assigns 'Adult' if age >= 18, 'Teen' if age between 13 and 17, and 'Child' otherwise, assuming the age column is indexed?
ACASE WHEN age BETWEEN 13 AND 17 THEN 'Teen' WHEN age >= 18 THEN 'Adult' ELSE 'Child' END
BCASE age WHEN 18 THEN 'Adult' WHEN 13 THEN 'Teen' ELSE 'Child' END
CCASE WHEN age >= 18 THEN 'Adult' WHEN age >= 13 THEN 'Teen' ELSE 'Child' END
DCASE WHEN age > 18 THEN 'Adult' WHEN age >= 13 THEN 'Teen' ELSE 'Child' END
Attempts:
2 left
💡 Hint
Think about the order of conditions and how SQL evaluates CASE WHEN clauses.
🔧 Debug
expert
3:00remaining
Debug the unexpected output from CASE in SELECT
A developer wrote this query:
SELECT id,
CASE WHEN score > 90 THEN 'Excellent'
WHEN score > 80 THEN 'Good'
WHEN score > 70 THEN 'Average'
ELSE 'Poor'
END AS rating
FROM Results;

But the output shows 'Poor' for a score of 85. What is the most likely cause?
AThe ELSE clause is overriding all previous WHEN conditions.
BThe score column is stored as text, so comparisons are lexicographical, not numeric.
CThe query is missing an ORDER BY clause, causing wrong results.
DThe CASE expression syntax is invalid and defaults to ELSE for all rows.
Attempts:
2 left
💡 Hint
Think about how data types affect comparison operators in SQL.