SQL FOUNDATIONS:Subqueries

Use subqueries to solve complex problems step-by-step.

SQL Subqueries Explained with Examples + Practice Questions

What are Subqueries

A subquery is a query written inside another query.

It is used to:

  • Filter data using another query
  • Compare values dynamically
  • Solve complex problems step-by-step

When to Use Subqueries

  • When result depends on another query
  • When filtering based on aggregated values
  • When solving interview problems like:
    • second highest salary
    • above average salary

Example Dataset

Table: employees

idnamedepartmentsalary
1JohnHR40000
2AliceIT60000
3BobIT55000
4EmmaFinance70000
5DavidHR45000

Basic Subquery

Example: Employees earning above average salary

sql
SELECT name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees
);

Types of Subqueries

  1. Single Row Subquery

Returns one value.

sql
SELECT name
FROM employees
WHERE salary = (
SELECT MAX(salary) FROM employees
);
  1. Multiple Row Subquery

Returns multiple values.

sql
SELECT name
FROM employees
WHERE department IN (
SELECT department FROM employees WHERE salary > 50000
);
  1. Subquery with EXISTS

Checks if rows exist.

sql
SELECT name
FROM employees e
WHERE EXISTS (
SELECT 1
FROM employees
WHERE department = e.department
AND salary > 60000
);

Subquery in SELECT

sql
SELECT name,
(SELECT AVG(salary) FROM employees) AS avg_salary
FROM employees;

Subquery in FROM (Derived Table)

sql
SELECT department, avg_salary
FROM (
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
) AS dept_avg;

Subquery vs JOIN (Important Insight)

  • Subqueries are easier to write
  • JOINs are often more efficient

Interviews often accept both approaches.

Key Concepts

  • Subquery runs first (inner query)
  • Outer query uses its result
  • Can return single or multiple values
  • Used in WHERE, SELECT, FROM

Common Questions (FAQ)

What is a subquery

A query inside another SQL query used to compute intermediate results.

When should we use subqueries

When logic depends on another query result.

Are subqueries slow

Sometimes, especially nested ones. JOINs can be faster.

Can subqueries return multiple values

Yes, depending on usage (IN, EXISTS).

Internal Learning Links

  • Learn Aggregations
  • Learn GROUP BY
  • Learn JOINs

Subqueries Missions

Solve exercises in sequence to unlock the next mission.

1

Highest salary

Find employees with highest salary.

Solve Mission
2

Above average salary

Find employees earning above average salary.

Locked
3

Lowest salary

Find employees with lowest salary.

Locked
4

Departments with salary > 55000

Find employees who work in departments where salary > 55000 exists.

Locked
5

Below average salary

Find employees earning less than average salary.

Locked
6

Second highest salary

Find second highest salary.

Locked
7

Equal to minimum salary

Find employees whose salary is equal to minimum salary.

Locked
8

Departments with avg > 50000

Find departments with average salary greater than 50000.

Locked
9

Above dept average

Find employees whose salary is greater than average of their department.

Locked
10

More than manager

Find employees who earn more than their manager (assume manager_id exists).

Locked