RivoCode

SQL Fundamentals · Aggregation & Grouping · Lesson 17 of 17

Filtering Groups with HAVING

Concept

Filtering Groups with HAVING

WHERE filters rows before grouping; HAVING filters groups after aggregation, which is why COUNT and other aggregates can appear in a HAVING clause but not in WHERE.

By the end of this lesson
  • Explain the core idea behind Filtering Groups with HAVING.
  • Predict output before running a change.
  • Test one realistic and one unusual input.
  • Use the result to make the next decision.
How to study this page
  1. 1. Read one concept.
  2. 2. Change the example.
  3. 3. Run, compare, and explain.
  4. 4. Complete the challenge below.
ExampleRunnable
SELECT level, COUNT(*) AS total
FROM courses
GROUP BY level
HAVING COUNT(*) > 2;
Try it Yourself »
Self-check before continuing

Without looking at the example, describe what changes when you modify one input in Filtering Groups with HAVING. Then reopen the editor and prove your explanation with a small test.

You are ready to continue when you can predict, test, and explain the result.

Your turn

Write a query that finds ages shared by more than one student, using GROUP BY and HAVING.

Loading editor…

Console

Output will appear here...