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.