SQL Practice Logo

SQLPractice Online

Subquery Types & Classification: Functions

Module: Subqueries & CTEs

-- 1. SCALAR SUBQUERY (returns single value)

-- Location: SELECT, WHERE, HAVING

-- Result: 1 row, 1 column

SELECT

name,

salary,

(SELECT AVG(salary) FROM employees) AS company_avg -- Scalar in SELECT

FROM employees

WHERE salary > (SELECT AVG(salary) FROM employees); -- Scalar in WHERE

-- Subquery executes once, returns one number

-- 2. MULTI-ROW SUBQUERY (returns list)

-- Location: WHERE with IN, ANY, ALL

-- Result: N rows, 1 column

SELECT name, department_id

FROM employees

WHERE department_id IN ( -- Multi-row subquery

SELECT id

FROM departments

WHERE location = 'NYC'

);

-- Subquery returns list: (1, 3, 5)

-- IN checks if employee's dept_id is in that list

-- 3. TABLE SUBQUERY / DERIVED TABLE (returns table)

-- Location: FROM clause

-- Result: N rows, M columns

-- MUST have alias

SELECT

department,

AVG(salary) AS avg_salary

FROM (

SELECT * -- Table subquery

FROM employees

WHERE hire_date > '2023-01-01'

) AS recent_hires -- Alias required!

GROUP BY department;

-- Subquery creates temporary table

-- Outer query aggregates that table

-- 4. CORRELATED SUBQUERY (references outer query)

-- Executes once per outer row

SELECT