Newer Version Available

This content describes an older version of this product. View Latest

Considerations for GROUP BY

Understand the special behavior and limitations for using the GROUP BY clause in SOQL queries.
  • Some object fields have a field type that doesn’t support grouping. You can't include fields with these field types in a GROUP BY clause.

    To check whether a field supports grouping, you can use SOAP API or REST API to make a describe call for the object that contains the field. For each field, the response includes a boolean groupable attribute that defines whether you can include the field in a GROUP BY clause. To check whether a field supports grouping for standard objects, you can also check the properties for the field in the Object Reference for Salesforce and Lightning Platform.

  • You must use a GROUP BY clause if your query has a LIMIT clause and an aggregated function. For example, the following query is valid:
    1SELECT Name, Max(CreatedDate)
    2FROM Account
    3GROUP BY Name
    4LIMIT 5

    The following query is invalid as there’s no GROUP BY clause:

    1SELECT MAX(CreatedDate)
    2FROM Account LIMIT 1
  • You can't use child relationship expressions that use the __r syntax in a query that uses a GROUP BY clause. For more information, see Understanding Relationship Names, Custom Objects, and Custom Fields.
  • In SOAP API, queries that include a GROUP BY clause can't use the queryMore() call to get more results.
  • In REST API, queries that include a GROUP BY clause can’t use the query locator to get more results.
  • Formula fields can't be grouped.