Challenge - 5 Problems
Subquery Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate2:00remaining
Output of EXISTS with a simple subquery
Given the tables employees and departments, what is the output of the following query?
SELECT e.name FROM employees e WHERE EXISTS (SELECT 1 FROM departments d WHERE d.id = e.department_id AND d.location = 'New York');
PostgreSQL
CREATE TABLE employees (id INT, name TEXT, department_id INT); CREATE TABLE departments (id INT, location TEXT); INSERT INTO employees VALUES (1, 'Alice', 10), (2, 'Bob', 20), (3, 'Charlie', 10); INSERT INTO departments VALUES (10, 'New York'), (20, 'Chicago');
Attempts:
2 left
💡 Hint
EXISTS returns true if the subquery finds any matching rows.
✗ Incorrect
The subquery checks if the employee's department is located in New York. Only employees in department 10 qualify, which are Alice and Charlie.
❓ query_result
intermediate2:00remaining
Filtering with NOT EXISTS
What does this query return?
SELECT d.id FROM departments d WHERE NOT EXISTS (SELECT 1 FROM employees e WHERE e.department_id = d.id);
PostgreSQL
CREATE TABLE employees (id INT, name TEXT, department_id INT); CREATE TABLE departments (id INT); INSERT INTO employees VALUES (1, 'Alice', 10), (2, 'Bob', 20); INSERT INTO departments VALUES (10), (20), (30);
Attempts:
2 left
💡 Hint
NOT EXISTS returns true when the subquery finds no matching rows.
✗ Incorrect
Department 30 has no employees, so it is returned by the query.
📝 Syntax
advanced2:00remaining
Identify the syntax error in EXISTS subquery
Which option contains a syntax error in the EXISTS subquery?
SELECT name FROM employees WHERE EXISTS (SELECT * FROM departments WHERE id = department_id);
PostgreSQL
CREATE TABLE employees (id INT, name TEXT, department_id INT); CREATE TABLE departments (id INT); INSERT INTO employees VALUES (1, 'Alice', 10), (2, 'Bob', 20); INSERT INTO departments VALUES (10), (20), (30);
Attempts:
2 left
💡 Hint
Look for incomplete conditions or misplaced syntax in the subquery.
✗ Incorrect
Option C ends the WHERE clause with AND but no condition after it, causing a syntax error.
❓ optimization
advanced2:00remaining
Optimizing EXISTS subquery for performance
Which query is generally more efficient for checking existence of related rows?
Option 1: SELECT name FROM employees WHERE EXISTS (SELECT 1 FROM departments WHERE id = employees.department_id); Option 2: SELECT name FROM employees WHERE department_id IN (SELECT id FROM departments);
Attempts:
2 left
💡 Hint
EXISTS stops searching after finding the first matching row.
✗ Incorrect
EXISTS is optimized to stop scanning once a match is found, making it faster for existence checks than IN which may scan all matches.
🧠 Conceptual
expert2:00remaining
Understanding EXISTS with correlated subqueries
Consider the query:
What does this query return?
SELECT e.name FROM employees e WHERE EXISTS (SELECT 1 FROM projects p WHERE p.lead_id = e.id AND p.status = 'active');
What does this query return?
Attempts:
2 left
💡 Hint
EXISTS with a correlated subquery checks for matching rows per outer row.
✗ Incorrect
The subquery checks if the employee leads any project with status 'active'. Only those employees are returned.