SQL · PRACTICAL GUIDE

SQL WHERE vs HAVING

Choose the correct filter stage before or after aggregation.

Practice SQLLearning path

What this solves

Show only materials with more than five scans. This pattern is useful when the business question is clear but a generic tutorial is too abstract.

The rule

WHERE filters source rows; HAVING filters grouped results.

SELECT Material, COUNT(*) Scans
FROM Scans
WHERE Status='OK'
GROUP BY Material
HAVING COUNT(*)>5;

Real-work checklist

  1. Define the business key and expected grain before writing the formula, query or markup.
  2. Test the pattern on a small known sample where you can verify the answer manually.
  3. Check missing values, duplicates and data types before trusting a large result.
  4. Scale to the real file or database only after the logic is proven.

Common mistake

Aggregate expressions such as COUNT(*) normally belong in HAVING, not WHERE.

Try it next