GROUP BY を使用するときの考慮事項
GROUP BY 句を使用する SOQL クエリを作成する場合、注意が必要な考慮事項がいくつかあります。
- 一部のオブジェクト項目には、グループ化がサポートされないデータ型があります。GROUP BY 句には、これらのデータ型を使用する項目を含めることができません。項目でグループ化がサポートされるかどうかを確認するには、SOAP API または REST API を使用して、その項目を含むオブジェクトに対して describe コールを実行します。レスポンスの Filed オブジェクトに groupable 項目が含まれており、この項目によって、GROUP BY 句に項目を含めることができるかどうかが示されます。項目で標準オブジェクトのグループ化がサポートされるかどうかを確認するには、『Salesforce および Lightning プラットフォームのオブジェクトリファレンス』で項目のプロパティも確認してください。
- クエリで LIMIT 句と集計関数を使用する場合は、GROUP BY 句を使用します。たとえば、次のクエリは有効です。
1SELECT Name, Max(CreatedDate) 2FROM Account 3GROUP BY Name 4LIMIT 5次のクエリは、GROUP BY 句がないので無効です。
1SELECT MAX(CreatedDate) 2FROM Account LIMIT 1 - GROUP BY 句を使用するクエリでは、__r 構文を使用する子リレーションの式は使用できません。詳細は、「リレーション名、カスタムオブジェクトおよびカスタム項目について」を参照してください。
- SOAP API では、GROUP BY 句を含むクエリで queryMore() を使用してより多くの結果を得ることはできません。クエリ結果が許容される最大数を超える場合は、より小さなチャンクでデータを照会するように検索条件を変更する必要があります。