What is the purpose of the CASE expression in PostgreSQL?
The CASE expression lets you perform conditional logic inside SQL queries, returning different values based on conditions, similar to an IF-THEN-ELSE in programming.
Click to reveal answer
beginner
Write the basic syntax of a simple CASE expression in PostgreSQL.
CASE expression syntax: CASE input_expression WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default_result END
Click to reveal answer
intermediate
How does a searched CASE expression differ from a simple CASE expression?
A searched CASE tests multiple boolean conditions directly (WHEN condition THEN result), while a simple CASE compares one expression to multiple values.
Click to reveal answer
beginner
What happens if no WHEN condition matches and there is no ELSE clause in a CASE expression?
If no WHEN matches and ELSE is missing, the CASE expression returns NULL.
Click to reveal answer
beginner
Can CASE expressions be used in SELECT, WHERE, and ORDER BY clauses in PostgreSQL?
Yes, CASE expressions can be used anywhere an expression is allowed, including SELECT, WHERE, ORDER BY, and more.
Click to reveal answer
What does the CASE expression return if no WHEN condition matches and ELSE is provided?
AAn error
BThe first WHEN condition's value
CNULL
DThe value in ELSE clause
✗ Incorrect
If no WHEN matches, CASE returns the ELSE value if provided.
Which of the following is a valid use of CASE in PostgreSQL?
AInside SELECT to change output values
BOnly in WHERE clause
COnly in ORDER BY clause
DOnly in UPDATE statements
✗ Incorrect
CASE can be used anywhere expressions are allowed, including SELECT.
What keyword starts a searched CASE expression?
AWHEN
BCASE
CIF
DELSE
✗ Incorrect
All CASE expressions start with the CASE keyword.
In a simple CASE expression, what is compared to the WHEN values?
AThe ELSE clause
BBoolean conditions
CAn input expression
DThe SELECT statement
✗ Incorrect
Simple CASE compares one input expression to each WHEN value.
What is the result of a CASE expression without ELSE and no matching WHEN?
ANULL
B0
CError
DFirst WHEN value
✗ Incorrect
Without ELSE, CASE returns NULL if no WHEN matches.
Explain how to use a searched CASE expression in PostgreSQL with an example.
Think about checking conditions like age > 18 or status = 'active'.
You got /5 concepts.
Describe the difference between simple CASE and searched CASE expressions in PostgreSQL.
One compares values, the other checks conditions.
You got /4 concepts.
Practice
(1/5)
1. What does the CASE expression do in PostgreSQL?
easy
A. Returns different results based on conditions
B. Creates a new table
C. Deletes rows from a table
D. Updates data in a table
Solution
Step 1: Understand the purpose of CASE
The CASE expression evaluates conditions and returns a result based on which condition is true.
Step 2: Compare with other SQL commands
Unlike CREATE, DELETE, or UPDATE, CASE does not change data but returns values conditionally.
Final Answer:
Returns different results based on conditions -> Option A
Quick Check:
CASE = conditional results [OK]
Hint: CASE returns values based on conditions, like if-then-else [OK]
Common Mistakes:
Thinking CASE modifies data
Confusing CASE with table operations
Ignoring ELSE for default results
2. Which of the following is the correct syntax to start a CASE expression in PostgreSQL?
easy
A. CASE IF condition THEN result ELSE default END
B. CASE WHEN condition THEN result ELSE default END
C. CASE condition THEN result ELSE default
D. CASE WHEN condition THEN result ELSE default
Solution
Step 1: Recall correct CASE syntax
The correct syntax starts with CASE, followed by WHEN conditions, THEN results, optional ELSE, and ends with END.
Step 2: Identify syntax errors in options
The syntax with 'CASE IF ... END' uses 'IF' instead of 'WHEN'. Syntaxes omitting 'END' (such as 'CASE WHEN ... default' or 'CASE condition ...') are invalid. Only the full syntax is correct.
Final Answer:
CASE WHEN condition THEN result ELSE default END -> Option B
Quick Check:
CASE syntax requires WHEN and END [OK]
Hint: CASE always ends with END and uses WHEN for conditions [OK]
Common Mistakes:
Using IF instead of WHEN
Forgetting END at the end
Omitting ELSE clause
3. Given the table employees with column salary, what will this query return?
SELECT salary, CASE WHEN salary > 5000 THEN 'High' ELSE 'Low' END AS salary_level FROM employees;
medium
A. A list of salaries with labels 'High' or 'Low' based on salary value
B. Only salaries greater than 5000
C. Only salaries less than or equal to 5000
D. An error because ELSE is missing
Solution
Step 1: Understand the CASE condition
The CASE checks if salary is greater than 5000; if true, returns 'High', else 'Low'.
Step 2: Analyze the SELECT output
The query returns all salaries with a new column showing 'High' or 'Low' labels accordingly.
Final Answer:
A list of salaries with labels 'High' or 'Low' based on salary value -> Option A
Quick Check:
CASE labels salaries as High or Low [OK]
Hint: CASE adds labels based on conditions without filtering rows [OK]
Common Mistakes:
Thinking CASE filters rows
Assuming ELSE is mandatory (it is here but present)
Confusing output with WHERE clause filtering
4. Identify the error in this CASE expression:
SELECT name, CASE WHEN age > 18 THEN 'Adult' WHEN age < 18 THEN 'Minor' END AS age_group FROM users;
medium
A. Syntax error in SELECT statement
B. Incorrect use of THEN keyword
C. Missing END keyword to close CASE
D. Missing ELSE clause for age = 18
Solution
Step 1: Check CASE conditions coverage
The CASE covers age > 18 and age < 18 but misses age = 18 case.
Step 2: Understand ELSE role
Without ELSE, age = 18 returns NULL. Adding ELSE handles this missing case.
Final Answer:
Missing ELSE clause for age = 18 -> Option D
Quick Check:
CASE needs ELSE for unmatched conditions [OK]
Hint: Add ELSE to handle all unmatched cases in CASE [OK]
Common Mistakes:
Assuming CASE covers all values without ELSE
Confusing END keyword placement
Misusing THEN keyword
5. You want to categorize products by price into 'Cheap' (price < 20), 'Moderate' (20 ≤ price < 100), and 'Expensive' (price ≥ 100). Which CASE expression correctly implements this?
hard
A. CASE WHEN price < 20 THEN 'Cheap' WHEN price >= 20 AND price <= 100 THEN 'Moderate' ELSE 'Expensive' END
B. CASE WHEN price < 20 THEN 'Cheap' WHEN price > 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END
C. CASE WHEN price < 20 THEN 'Cheap' WHEN price >= 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END
D. CASE WHEN price <= 20 THEN 'Cheap' WHEN price >= 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END
Solution
Step 1: Analyze price ranges for categories
'Cheap' is price less than 20, 'Moderate' is price from 20 up to but not including 100, 'Expensive' is 100 or more.
Step 2: Check each option's conditions
CASE WHEN price < 20 THEN 'Cheap' WHEN price >= 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END correctly uses < 20, then >= 20 and < 100, else 'Expensive'. CASE WHEN price < 20 THEN 'Cheap' WHEN price > 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END misses price = 20 in 'Moderate'. CASE WHEN price <= 20 THEN 'Cheap' WHEN price >= 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END overlaps at 20 in both 'Cheap' and 'Moderate'. CASE WHEN price < 20 THEN 'Cheap' WHEN price >= 20 AND price <= 100 THEN 'Moderate' ELSE 'Expensive' END includes 100 in 'Moderate' but should be 'Expensive'.
Final Answer:
CASE WHEN price < 20 THEN 'Cheap' WHEN price >= 20 AND price < 100 THEN 'Moderate' ELSE 'Expensive' END -> Option C
Quick Check:
Use inclusive and exclusive ranges carefully in CASE [OK]
Hint: Use >= and < carefully to avoid overlapping ranges [OK]
Common Mistakes:
Overlapping or missing ranges
Using > instead of >= causing gaps
Misplacing ELSE category boundaries
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.