WHERE clause and GROUP BY

You can use a WHERE clause in a statement with GROUP BY. The WHERE clause is evaluated before the GROUP BY clause. Rows that do not satisfy the conditions in the WHERE clause are eliminated before any grouping is done. Here is an example:

SELECT  Name, AVG( UnitPrice )
   FROM Products
   WHERE ID > 400
   GROUP BY Name;

Only the rows with ID values of more than 400 are included in the groups that are used to produce the query results.

Example

The following query illustrates the use of WHERE, GROUP BY, and HAVING clauses in one query:

SELECT Name, SUM( Quantity )
   FROM Products
   WHERE Name LIKE '%shirt%'
   GROUP BY Name
   HAVING SUM( Quantity ) > 100;
Name SUM(Products.Quantity)

Tee Shirt

157

In this example:

  • The WHERE clause includes only rows that have a name including the word shirt (Tee Shirt, Sweatshirt).
  • The GROUP BY clause collects the rows with a common name.
  • The SUM aggregate calculates the total quantity of products available for each group.
  • The HAVING clause excludes from the final results the groups whose inventory totals do not exceed 100.