COUNT() および COUNT(fieldName)
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%'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 OpportunityCOUNT() とは異なり、API バージョン 18.0 以降では GROUP BY 句と COUNT(fieldName) を一緒に使用できます。これにより、レコードを分析して、サマリーレポート情報を返すことができます。たとえば、次のクエリは各 LeadSource の値のリード数を返します。
1SELECT LeadSource, COUNT(Name)
2FROM Lead
3GROUP BY LeadSource