Skillversitas

Subqueries

What Is a Subquery?

A subquery is a SQL query placed inside another query. Subqueries are also called nested queries or inner queries.

Subqueries in WHERE

SELECT name, salary
FROM EMPLOYEE
WHERE salary > (SELECT AVG(salary) FROM EMPLOYEE);

The query above finds employees whose salary is above the average.

Subqueries with IN

SELECT name
FROM EMPLOYEE
WHERE id department IN (
    SELECT department_id
    FROM DEPARTMENT
    WHERE location = 'Chicago'
);

Subqueries in FROM (Derived Tables)

SELECT d.department_name, sub.amount
FROM DEPARTMENT d
JOIN (
    SELECT department_id, COUNT(*) AS amount
    FROM EMPLOYEE
    GROUP BY department_id
) sub ON d.department_id = sub.department_id;

Subqueries in SELECT

SELECT
    name,
    salary,
    (SELECT AVG(salary) FROM EMPLOYEE) AS average
FROM EMPLOYEE;

EXISTS - Checking for Data Existence

SELECT name
FROM EMPLOYEE k
WHERE EXISTS (
    SELECT 1 FROM TRANSACTION t
    WHERE t.employee_id = k.employee_id
);

Correlated Subqueries

A correlated subquery runs the inner query for every row of the outer query.

SELECT name, salary, department
FROM EMPLOYEE k1
WHERE salary = (
    SELECT MAX(salary)
    FROM EMPLOYEE k2
    WHERE k2.department = k1.department
);

Subquery Tips

  • Use subqueries only when other solutions are more complicated
  • Make sure the subquery returns the appropriate number of columns
  • Watch performance on large datasets

Subqueries are an important technique. Next, we will learn UNION, INTERSECT & EXCEPT.