GROUP BY による小計の識別
SOQL クエリで GROUP BY ROLLUP または GROUP BY CUBE を使用して小計を追加する場合、GROUPING(fieldName) 関数を使用して、行が項目の小計であるかどうかを識別できます。
データのレポートまたはグラフを作成するためにクエリ結果を反復処理する場合、集計データ行と小計行を区別する必要があります。GROUPING(fieldName) を使用してこれを実行できます。GROUPING(fieldName) の使用は、GROUP BY ROLLUP 句または GROUP BY CUBE 句で複数の項目を使用しているときに、結果を解釈する場合に特に重要です。これは集計データと小計を区別するのに最適な方法です。
このクエリ例は、LeadSource 項目と Rating 項目の組み合わせの小計を返します。GROUPING(LeadSource) は、行が LeadSource 項目の集計行であるかどうかを示し、GROUPING(Rating) は行が Rating 項目の集計行であるかどうかを示します。
次の表に、クエリ結果を示します。
| LeadSource | Rating | grpLS | grpRating | cnt | コメント |
|---|---|---|---|---|---|
| Web | null | 0 | 0 | 5 | LeadSource = Web で Rating なしのリードは 5 件 |
| Web | Hot | 0 | 0 | 1 | LeadSource = Web で Rating = Hot のリードは 1 件 |
| Web | Warm | 0 | 0 | 1 | LeadSource = Web で Rating = Warm のリードは 1 件 |
| Web | null | 0 | 1 | 7 | LeadSource = Web のリードの小計は 7 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す) |
| Phone Inquiry | null | 0 | 0 | 4 | LeadSource = Phone Inquiry で Rating なしのリードは 4 件 |
| Phone Inquiry | null | 0 | 1 | 4 | LeadSource = Phone Inquiry のリードの小計は 4 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す) |
| Partner Referral | null | 0 | 0 | 4 | LeadSource = Partner Referral で Rating なしのリードは 4 件 |
| Partner Referral | null | 0 | 1 | 4 | LeadSource = Partner Referral のリードの小計は 4 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す) |
| Purchased List | null | 0 | 0 | 7 | LeadSource = Purchased List で Rating なしのリードは 7 件 |
| Purchased List | null | 0 | 1 | 7 | LeadSource = Purchased List のリードの小計は 7 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す) |
| null | null | 1 | 1 | 22 | リードの総計は 22 件 (grpRating = 1 と grpLS = 1 はこれが総計であることを示す) |