この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

COUNT() および COUNT(fieldName)

COUNT() 句 (省略可能) を SOQL クエリの SELECT ステートメントに使用すると、クエリが返す行数を取得できます。

COUNT() の構文には次の 2 つのバージョンがあります。

GROUP BY 句を使用している場合は、COUNT() の代わりに COUNT(fieldName) を使用します。

COUNT()

COUNT() は絞り込み条件に一致する行数を返します。

次に例を示します。

1SELECT COUNT()
2FROM Account
3WHERE Name LIKE 'a%'
1SELECT COUNT()
2FROM Contact, Contact.Account
3WHERE Account.Name = 'MyriadPubs'

COUNT() の場合、クエリ結果の size 項目が行数を返します。records 項目は null を返します。

COUNT() を使用するときは、次の点に注意してください。

  • COUNT()SELECT リストの唯一の要素であることが必要です。
  • COUNT()LIMIT 句を一緒に使用できます。
  • COUNT()ORDER BY 句は一緒に使用できません。代わりに COUNT(fieldName) を使用します。
  • API バージョン 19.0 以降では、COUNT()GROUP BY 句は一緒に使用できません。代わりに COUNT(fieldName) を使用します。

COUNT(fieldName)

COUNT(fieldName) は絞り込み条件に一致し、fieldName の値が null 以外の行数を返します。この構文は COUNT() より新しく、API バージョン 18.0 以降で使用できます。

次に例を示します。

1SELECT COUNT(Id)
2FROM Account
3WHERE Name LIKE 'a%'

COUNT(Id)COUNT() と同じ数を返します。したがって前のクエリと次のクエリは同等になります。

1SELECT COUNT()
2FROM Account
3WHERE Name LIKE 'a%'

SOQL の COUNT(Id) は、SQL の COUNT(*) に相当します。

メモ

COUNT(fieldName) の場合、records 項目の AggregateResult オブジェクトが行数を返します。size 項目にはこの数が反映されません。次に例を示します。

1SELECT COUNT(Id)
2FROM Account
3WHERE Name LIKE 'a%'

このクエリの場合、この数は AggregateResult オブジェクトの expr0 項目で返されます。詳細は、GROUP BY での別名の使用を参照してください。

COUNT() の代わりに COUNT(fieldName) を使用することには、利点があります。SELECT 句には複数の COUNT(fieldName) 項目を含めることができます。たとえば次のクエリは、商談の数およびキャンペーンに関連付けられている商談の数を返します。

1SELECT COUNT(Id), COUNT(CampaignId)
2FROM Opportunity

COUNT() とは異なり、API バージョン 18.0 以降では GROUP BY 句と COUNT(fieldName) を一緒に使用できます。これにより、レコードを分析して、サマリーレポート情報を返すことができます。たとえば、次のクエリは各 LeadSource の値のリード数を返します。

1swfobject.registerObject("clippy.codeblock-6", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17SELECT LeadSource, COUNT(Name)
18FROM Lead
19GROUP BY LeadSource