SQL Data Analytics • Lesson 16

Subqueries & CTEs

Learn how to use a query inside another query and how Common Table Expressions make complex analytical SQL easier to understand.

Your progress0%

0 of 8 concepts completed

Complete the activity and related MCQ to unlock the next concept.

Concept 1SUBQUERY

What Is a Subquery?

A subquery is a SQL query written inside another query. The inner query produces a value or a list that the outer query uses to filter, compare or join.

Interactive Data

Customers & Orders

Two related tables — enough to demonstrate scalar, IN, correlated subqueries and CTEs.

5
CUSTOMERS
6
ORDERS
₹4,867
AVG ORDER

Customers

customer_idnamecity
101RahulDelhi
102PriyaMumbai
103AmitPune
104NehaDelhi
105ArjunJaipur

Orders

order_idcustomer_idamount
5001101₹2,500
5002102₹7,000
5003101₹4,500
5004103₹3,200
5005104₹9,000
5006102₹3,000

Per-customer sales totals

namecitytotal_sales> 8000?
RahulDelhi₹7,000no
PriyaMumbai₹10,000yes
AmitPune₹3,200no
NehaDelhi₹9,000yes

Learn by Seeing

Two nested queries

Outer Query
     ↓ uses result of
Inner Query

The inner query runs first, produces a result, and the outer query uses that result.

Two nested queries — click to explore each layer:

Inner query

Runs first. Produces a value or a list that the outer query can use.

Interactive Activity

What is a subquery?

Hint: It lives inside parentheses and feeds data to the outer query.

SQL Analyst Mindset

Break big problems into small queries

Analysts rarely write one giant query. They build analysis in layers — a subquery for a scalar value, a CTE for a named intermediate result — and then combine those layers into the final answer.

01

Decompose

What is the inner step?

02

Name it

Wrap it in a CTE for readability.

03

Combine

Join or filter against the inner result.

04

Answer

Only the final SELECT returns rows.

Frequently Asked Questions

Subqueries & CTEs — FAQs

Subquery vs CTE — when to use which?

Use a subquery for a short, one-off inner value. Use a CTE when the logic has multiple steps or you want a named, reusable block.

How many values can a scalar subquery return?

Exactly one — one row and one column. Anything else causes a runtime error in most databases.

Are correlated subqueries slow?

Often slower than equivalent joins because they run once per outer row. Many can be rewritten as joins for performance.

Can I use multiple CTEs in one query?

Yes. Use WITH cte1 AS (...), cte2 AS (...) to chain as many named steps as you need.

Lesson Summary

What you learned

Scalar subquery

Returns a single value the outer query can compare against.

IN subquery

Returns a list the outer query matches against.

Correlated subquery

References outer columns — evaluated per row.

CTE (WITH)

Named temporary result for readable, multi-step queries.