Challenge - 5 Problems
Subquery Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate2:00remaining
Find employees with salary above average
Given a table Employees with columns
id, name, and salary, what is the output of this query?SELECT name FROM Employees WHERE salary > (SELECT AVG(salary) FROM Employees);
SQL
SELECT name FROM Employees WHERE salary > (SELECT AVG(salary) FROM Employees);
Attempts:
2 left
💡 Hint
Think about what the subquery returns and how it is used in the WHERE clause.
✗ Incorrect
The subquery calculates the average salary. The main query selects employees with salary greater than that average.
📝 Syntax
intermediate2:00remaining
Identify the syntax error in subquery usage
Which option contains a syntax error when using a subquery in the WHERE clause to find products priced higher than the average price?
SELECT product_name FROM Products WHERE price > (SELECT AVG(price) FROM Products);
SQL
SELECT product_name FROM Products WHERE price > (SELECT AVG(price) FROM Products);
Attempts:
2 left
💡 Hint
Check if the subquery is properly enclosed in parentheses.
✗ Incorrect
Option B misses parentheses around the subquery, causing a syntax error.
❓ optimization
advanced3:00remaining
Optimize query with subquery in WHERE clause
Consider this query to find customers who placed orders with total amount greater than the average order amount:
Which option improves performance by avoiding repeated subquery execution?
SELECT customer_id FROM Orders WHERE total_amount > (SELECT AVG(total_amount) FROM Orders);
Which option improves performance by avoiding repeated subquery execution?
SQL
SELECT customer_id FROM Orders WHERE total_amount > (SELECT AVG(total_amount) FROM Orders);
Attempts:
2 left
💡 Hint
Calculate the average once and reuse it.
✗ Incorrect
Using a CTE calculates the average once, avoiding repeated subquery calls for each row.
🔧 Debug
advanced2:30remaining
Debug why query returns no rows
Given tables Orders(order_id, customer_id, amount) and Customers(customer_id, name), this query returns no rows:
What is the most likely reason?
SELECT name FROM Customers WHERE customer_id IN (SELECT customer_id FROM Orders WHERE amount > 1000);
What is the most likely reason?
SQL
SELECT name FROM Customers WHERE customer_id IN (SELECT customer_id FROM Orders WHERE amount > 1000);
Attempts:
2 left
💡 Hint
Check the data in Orders table for amounts over 1000.
✗ Incorrect
If no orders have amount > 1000, the subquery returns empty, so no customers match.
🧠 Conceptual
expert3:00remaining
Understanding subquery behavior in WHERE clause
What happens if a subquery in the WHERE clause returns NULL when used with a comparison operator like > ?
Example:
Assuming some products have no matching discount rows, what is the effect on those products in the result?
Example:
SELECT * FROM Products WHERE price > (SELECT MAX(discount) FROM Discounts WHERE product_id = Products.id);
Assuming some products have no matching discount rows, what is the effect on those products in the result?
SQL
SELECT * FROM Products WHERE price > (SELECT MAX(discount) FROM Discounts WHERE product_id = Products.id);
Attempts:
2 left
💡 Hint
Remember how SQL treats NULL in comparisons.
✗ Incorrect
In SQL, any comparison with NULL results in unknown (treated as false in WHERE), so those rows are excluded.