GROUP BY ROLLUP
クエリ結果の集計データについて小計を追加するには、SOQL クエリで GROUP BY ROLLUP 句 (省略可能) を使用します。このアクションによりクエリで小計を計算できるため、コード内にそのロジックを含める必要はありません。
API バージョン 18.0 以降では、GROUP BY ROLLUP を SUM() や COUNT(fieldName) などの集計関数と共に使用できます。構文は次のとおりです。
1[GROUP BY ROLLUP (fieldName[,...])]GROUP BY ROLLUP 句を使用するクエリは、GROUP BY 句を使用する同等のクエリと同じ集計データを返します。また、複数レベルの小計行も返します。GROUP BY ROLLUP 句には、カンマ区切りのリストで 3 つの項目まで含めることができます。
GROUP BY ROLLUP 句は、グルーピング列のリスト全体を右から左に集計し、異なるレベルの小計を追加します。積み上げ集計項目の順序は重要です。3 つの積み上げ集計項目を含むクエリは次の合計行を返します。
- fieldName1 と fieldName2 の各組み合わせの第 1 レベルの小計。結果は fieldName3 でグループ化されます。
- fieldName1 の各値の第 2 レベルの小計。結果は fieldName2 と fieldName3 でグループ化されます。
- 1 つの総計行。
1 つの積み上げ集計項目によるグループ化
この単純な例では、1 つの項目で結果を積み上げ集計します。
1SELECT LeadSource, COUNT(Name) cnt
2FROM Lead
3GROUP BY ROLLUP(LeadSource)次の表に、クエリ結果を示します。集計された結果には、すべてのグルーピングの総計を返す、LeadSource が null 値の追加行が含まれます。積み上げ集計項目は 1 つのみのため、その他の小計はありません。
| LeadSource | cnt |
|---|---|
| Web | 7 |
| Phone Inquiry | 4 |
| Partner Referral | 4 |
| Purchased List | 7 |
| null | 22 |
2 つの積み上げ集計項目によるグループ化
この例では、2 つの項目で結果を積み上げ集計します。
1SELECT Status, LeadSource, COUNT(Name) cnt
2FROM Lead
3GROUP BY ROLLUP(Status, LeadSource)次の表に、クエリ結果を示します。第 1 レベルの小計行と総計行に注目してください。各行の説明をコメント列に示します。
| Status | LeadSource | cnt | コメント |
|---|---|---|---|
| Open - Not Contacted | Web | 1 | Status = Open - Not Contacted で LeadSource = Web のリードは 1 件 |
| Open - Not Contacted | Phone Inquiry | 1 | Status = Open - Not Contacted で LeadSource = Phone Inquiry のリードは 1 件 |
| Open - Not Contacted | Purchased List | 1 | Status = Open - Not Contacted で LeadSource = Purchased List のリードは 1 件 |
| Open - Not Contacted | null | 3 | Status = Open - Not Contacted のすべてのリードの第 1 レベルの小計 |
| Working - Contacted | Web | 4 | Status = Working - Contacted ��� LeadSource = Web のリードは 4 件 |
| Working - Contacted | Phone Inquiry | 1 | Status = Working - Contacted で LeadSource = Phone Inquiry のリードは 1 件 |
| Working - Contacted | Partner Referral | 3 | Status = Working - Contacted で LeadSource = Partner Referral のリードは 3 件 |
| Working - Contacted | Purchased List | 4 | Status = Working - Contacted で LeadSource = Purchased List のリードは 4 件 |
| Working - Contacted | null | 12 | Status = Working - Contacted のすべてのリードの第 1 レベルの小計 |
| Closed - Converted | Web | 1 | Status = Closed - Converted で LeadSource = Web のリードは 1 件 |
| Closed - Converted | Phone Inquiry | 1 | Status = Closed - Converted で LeadSource = Phone Inquiry のリードは 1 件 |
| Closed - Converted | Purchased List | 1 | Status = Closed - Converted で LeadSource = Purchased List のリードは 1 件 |
| Closed - Converted | null | 3 | Status = Closed - Converted のすべてのリードの第 1 レベルの小計 |
| Closed - Not Converted | Web | 1 | Status = Closed - Not Converted で LeadSource = Web のリードは 1 件 |
| Closed - Not Converted | Phone Inquiry | 1 | Status = Closed - Not Converted で LeadSource = Phone Inquiry のリードは 1 件 |
| Closed - Not Converted | Partner Referral | 1 | Status = Closed - Not Converted で LeadSource = Partner Referral のリードは 1 件 |
| Closed - Not Converted | Purchased List | 1 | Status = Closed - Not Converted で LeadSource = Purchased List のリードは 1 件 |
| Closed - Not Converted | null | 4 | Status = Closed - Not Converted のすべてのリードの第 1 レベルの小計 |
| null | null | 22 | リードの総計は 22 件 |
これらの例では COUNT(fieldName) 集計関数を使用していますが、この構文には任意の集計関数を使用できます。また、3 つの積み上げ集計項目でグループ化してさらに多くの小計行を返すこともできます。