What is an Aggregate Query?
An aggregate query uses multiple functions together to get complete statistics in ONE query.
Instead of running 4 separate queries, run ONE:
SELECT grade, COUNT(*) AS total,
MIN(age) AS youngest,
MAX(age) AS oldest,
AVG(age) AS avg_age
FROM students
GROUP BY grade;This single query tells you:
- COUNT → How many students per grade
- MIN → Youngest age in each grade
- MAX → Oldest age in each grade
- AVG → Average age per grade
How It Works
Complete Query Pattern
Use WHERE + GROUP BY + HAVING together:
SELECT grade, COUNT(*) AS count, AVG(age) AS avg
FROM students
WHERE age >= 19
GROUP BY grade
HAVING COUNT(*) > 1;Order matters:
- WHERE → Filter rows first (age >= 19)
- GROUP BY → Group filtered rows
- HAVING → Filter groups (count > 1)
Quick Summary
- SELECT → Pick columns + aggregates
- WHERE → Filter rows before grouping
- GROUP BY → Make groups
- HAVING → Filter groups after