Aggregate Functions

Use aggregate functions in a GROUP BY clause in SOQL queries to generate reports for analysis. Aggregate functions include AVG(), COUNT(), MIN(), MAX(), SUM(), and more.

You can also use aggregate functions without using a GROUP BY clause. For example, you could use the AVG() aggregate function to find the average Amount for all your opportunities.

However, these functions become a more powerful tool to generate reports when you use them with a GROUP BY clause. For example, you could find the average Amount for all your opportunities by campaign.

This table lists all the aggregate functions supported by SOQL.

All aggregate functions ignore null values, except for COUNT() and COUNT(Id).

COUNT(fieldname) is different from COUNT(). COUNT(fieldname) does ignore null values.

Aggregate FunctionDescription
AVG()Returns the average value of a numeric field.
COUNT() and COUNT(fieldName)Returns the number of rows matching the query criteria.
COUNT_DISTINCT()Returns the number of distinct non-null field values matching the query criteria.
MIN()Returns the minimum value of a field. If you use the MIN() or MAX() functions on a picklist field, the function uses the sort order of the picklist values instead of alphabetical order.
MAX()Returns the maximum value of a field. Available in API version 18.0 and later.
SUM()Returns the total sum of a numeric field.

Example AVG():

Example using COUNT():

Example using COUNT(fieldName):

Note: COUNT() and COUNT(Id) in SOQL are similar to COUNT(*) in SQL.

Example COUNT_DISTINCT():

Note: COUNT_DISTINCT(fieldName) in SOQL is equivalent to COUNT(DISTINCT fieldName) in SQL. .

Example MIN():

Example MAX():

Example SUM():

You can’t use a LIMIT clause in a query that uses an aggregate function, but does not use a GROUP BY clause. For example, the following query is invalid: