Bird
Raised Fist0
SQLquery~20 mins

COALESCE and NULLIF as CASE shortcuts in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
COALESCE and NULLIF Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Output of COALESCE with NULL values
Given the table Employees with columns id, name, and nickname, what is the output of this query?
SELECT id, COALESCE(nickname, name) AS display_name FROM Employees ORDER BY id;

Assume the data:
id | name    | nickname
1  | Alice   | NULL
2  | Bob     | Bobby
3  | Charlie | NULL
SQL
SELECT id, COALESCE(nickname, name) AS display_name FROM Employees ORDER BY id;
A[{"id":1,"display_name":null},{"id":2,"display_name":"Bobby"},{"id":3,"display_name":null}]
B[{"id":1,"display_name":"Alice"},{"id":2,"display_name":"Bobby"},{"id":3,"display_name":"Charlie"}]
C[{"id":1,"display_name":"nickname"},{"id":2,"display_name":"Bobby"},{"id":3,"display_name":"nickname"}]
D[{"id":1,"display_name":"Alice"},{"id":2,"display_name":"Bob"},{"id":3,"display_name":"Charlie"}]
Attempts:
2 left
💡 Hint
COALESCE returns the first non-NULL value from its arguments.
❓ query_result
intermediate
2:00remaining
Using NULLIF to avoid division by zero
Consider a table Sales with columns region, total_sales, and total_customers. What is the output of this query?
SELECT region, total_sales / NULLIF(total_customers, 0) AS avg_sale_per_customer FROM Sales ORDER BY region;

Given data:
region | total_sales | total_customers
East   | 1000        | 10
West   | 500         | 0
North  | 750         | 15
SQL
SELECT region, total_sales / NULLIF(total_customers, 0) AS avg_sale_per_customer FROM Sales ORDER BY region;
A[{"region":"East","avg_sale_per_customer":100},{"region":"North","avg_sale_per_customer":50},{"region":"West","avg_sale_per_customer":null}]
B[{"region":"East","avg_sale_per_customer":100},{"region":"North","avg_sale_per_customer":50},{"region":"West","avg_sale_per_customer":0}]
C[{"region":"East","avg_sale_per_customer":100},{"region":"North","avg_sale_per_customer":50},{"region":"West","avg_sale_per_customer":"Infinity"}]
D[{"region":"East","avg_sale_per_customer":100},{"region":"North","avg_sale_per_customer":50},{"region":"West","avg_sale_per_customer":500}]
Attempts:
2 left
💡 Hint
NULLIF returns NULL if the second argument matches the first, preventing division by zero.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in COALESCE usage
Which of the following SQL statements will cause a syntax error?
ASELECT COALESCE(NULL, NULL, 'fallback') AS result;
BSELECT COALESCE('value1', 'value2', NULL) AS result;
CSELECT COALESCE(NULL, 'default') AS result;
DSELECT COALESCE(NULL 'default') AS result;
Attempts:
2 left
💡 Hint
Check the commas separating arguments in COALESCE.
🧠 Conceptual
advanced
1:30remaining
Understanding NULLIF behavior
What is the result of the expression NULLIF('abc', 'abc') in SQL?
A'abc'
BError
CNULL
D'' (empty string)
Attempts:
2 left
💡 Hint
NULLIF returns NULL if both arguments are equal.
❓ optimization
expert
2:30remaining
Optimizing CASE with COALESCE
You want to replace this CASE statement with a simpler expression:
SELECT CASE WHEN col1 IS NOT NULL THEN col1 ELSE col2 END AS result FROM table1;

Which of the following is the best equivalent SQL expression?
ASELECT COALESCE(col1, col2) AS result FROM table1;
BSELECT NULLIF(col1, col2) AS result FROM table1;
CSELECT CASE WHEN col1 = col2 THEN col1 ELSE col2 END AS result FROM table1;
DSELECT IFNULL(col2, col1) AS result FROM table1;
Attempts:
2 left
💡 Hint
COALESCE returns the first non-NULL value.

Practice

(1/5)
1. What does the SQL function COALESCE do?
easy
A. Returns the first non-NULL value from its arguments
B. Returns NULL if two values are equal
C. Always returns the last value in the list
D. Converts NULL values to zero

Solution

  1. Step 1: Understand COALESCE behavior

    COALESCE checks each argument in order and returns the first one that is not NULL.
  2. Step 2: Compare with other options

    NULLIF returns NULL if two values are equal, which is different. COALESCE does not convert NULL to zero automatically.
  3. Final Answer:

    Returns the first non-NULL value from its arguments -> Option A
  4. Quick Check:

    COALESCE = first non-NULL [OK]
Hint: COALESCE picks first non-NULL value in order [OK]
Common Mistakes:
  • Confusing COALESCE with NULLIF
  • Thinking COALESCE converts NULL to zero
  • Assuming COALESCE returns last value
2. Which of the following is the correct syntax for using NULLIF in SQL?
easy
A. NULLIF(value1, value2)
B. NULLIF(value1 = value2)
C. NULLIF(value1; value2)
D. NULLIF(value1, value2, value3)

Solution

  1. Step 1: Recall NULLIF syntax

    NULLIF takes exactly two arguments separated by a comma: NULLIF(value1, value2).
  2. Step 2: Eliminate incorrect options

    NULLIF(value1 = value2) uses an equality inside parentheses, which is invalid syntax. NULLIF(value1; value2) uses a semicolon instead of a comma. NULLIF(value1, value2, value3) has three arguments, which is not allowed.
  3. Final Answer:

    NULLIF(value1, value2) -> Option A
  4. Quick Check:

    NULLIF syntax = NULLIF(val1, val2) [OK]
Hint: NULLIF takes exactly two comma-separated values [OK]
Common Mistakes:
  • Using semicolon instead of comma
  • Passing more than two arguments
  • Using an expression inside NULLIF parentheses
3. Given the table Employees with columns id, bonus (nullable), what is the result of this query?
SELECT id, COALESCE(bonus, 100) AS bonus_amount FROM Employees WHERE id = 1;

Assuming the row with id=1 has bonus = NULL.
medium
A. No rows returned
B. [{"id": 1, "bonus_amount": 100}]
C. [{ "id": 1, "bonus_amount": 0 }]
D. [{ "id": 1, "bonus_amount": NULL }]

Solution

  1. Step 1: Understand COALESCE with NULL bonus

    Since bonus is NULL for id=1, COALESCE returns the second argument, 100.
  2. Step 2: Check query output

    The query selects id=1 and bonus_amount as 100, so the result is [{"id": 1, "bonus_amount": 100}].
  3. Final Answer:

    [{"id": 1, "bonus_amount": 100}] -> Option B
  4. Quick Check:

    COALESCE(NULL, 100) = 100 [OK]
Hint: COALESCE returns first non-NULL, here 100 [OK]
Common Mistakes:
  • Assuming NULL is returned instead of 100
  • Confusing COALESCE with NULLIF
  • Expecting zero instead of 100
4. Identify the error in this SQL snippet:
SELECT id, NULLIF(bonus) AS result FROM Employees;
medium
A. Missing WHERE clause
B. NULLIF cannot be used in SELECT clause
C. NULLIF requires two arguments, only one given
D. NULLIF returns wrong data type

Solution

  1. Step 1: Check NULLIF function usage

    NULLIF requires exactly two arguments, but only one (bonus) is provided here.
  2. Step 2: Validate other options

    NULLIF can be used in SELECT. WHERE clause is optional. NULLIF does not cause data type errors by itself.
  3. Final Answer:

    NULLIF requires two arguments, only one given -> Option C
  4. Quick Check:

    NULLIF needs two values [OK]
Hint: NULLIF always needs two arguments [OK]
Common Mistakes:
  • Using NULLIF with one argument
  • Thinking WHERE clause is mandatory
  • Assuming NULLIF changes data type
5. You want to replace a value with NULL if it equals zero, otherwise keep it as is. Which SQL expression using NULLIF achieves this?
hard
A. CASE WHEN value = 0 THEN value ELSE NULL END
B. COALESCE(value, 0)
C. NULLIF(0, value)
D. NULLIF(value, 0)

Solution

  1. Step 1: Understand NULLIF behavior

    NULLIF(value, 0) returns NULL if value equals 0, else returns value unchanged.
  2. Step 2: Compare other options

    COALESCE returns first non-NULL, not conditional replacement. CASE in CASE WHEN value = 0 THEN value ELSE NULL END returns value when zero, opposite of requirement. NULLIF(0, value) returns NULL if 0 equals value, which is reversed logic.
  3. Final Answer:

    NULLIF(value, 0) -> Option D
  4. Quick Check:

    NULLIF(value, 0) replaces zero with NULL [OK]
Hint: NULLIF(value, 0) returns NULL if value is zero [OK]
Common Mistakes:
  • Using COALESCE instead of NULLIF
  • Reversing argument order in NULLIF
  • Writing CASE with wrong THEN/ELSE logic
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard