Aggregate functions
- Last Updated: July 30, 2025
- 1 minute read
- DataDirect Connectors
- ODBC
- Salesforce 8.0
- Documentation
Aggregate functions can also be a part of a Select clause. Aggregate
functions return a single value from a set of rows. An aggregate can be used with a column
name (for example, AVG(salary)) or in combination with a
more complex column expression (for example, AVG(salary *
1.07)). The column expression can be preceded by the DISTINCT operator. The DISTINCT operator
eliminates duplicate values from an aggregate expression.
The following table lists supported aggregate functions.
SUM(COUNT(col1)), are
currently not permitted by the driver.| Aggregate | Returns |
| AVG | The average of the values in a numeric column
expression. For example, AVG(salary) returns the
average of all salary column values. |
| COUNT | The number of values in any field expression. For example,
COUNT(name) returns the number
of name values. When using COUNT
with a field name, COUNT returns
the number of non-NULL column values. A special example is COUNT(*), which returns the number of
rows in the set, including rows with NULL values.Note: The driver
does not support COUNT(DISTINCT *). For
example, SELECT COUNT(DISTINCT *) FROM
mytable results in a syntax
error. |
| MAX | The maximum value in any column expression. For
example, MAX(salary) returns the maximum salary
column value. |
| MIN | The minimum value in any column expression. For
example, MIN(salary) returns the minimum salary
column value. |
| SUM | The total of the values in a numeric column
expression. For example, SUM(salary) returns the
sum of all salary column values. |
Example A
In the following example, only distinct last name values are counted. The
default behavior is that all duplicate values be returned, which can be made explicit with
ALL.
COUNT (DISTINCT last_name)
Example B
The following example uses the COUNT,
MAX, and AVG aggregate
functions:
SELECT
COUNT(amount) AS numOpportunities,
MAX(amount) AS maxAmount,
AVG(amount) AS avgAmount
FROM opportunity o INNER JOIN user u
ON o.ownerId = u.id
WHERE o.isClosed = 'false' AND
u.name = 'MyName'