SOQL 中的合并統(tǒng)計(jì)查詢
在 SOQL 中钥顽,我們可以使用一系列函數(shù)來進(jìn)行合并統(tǒng)計(jì)查詢柒莉。它們的功能和標(biāo)準(zhǔn) SQL 中的 SUM()餐曼,COUNT() 等函數(shù)類似。
Apex 中使用合并統(tǒng)計(jì)查詢
在 Apex 中忘古,我們可以通過調(diào)用合并查詢的 SOQL 語句來得到系列結(jié)果。在 Apex 中诅诱,AggregateResult 類是專門用來存儲這些結(jié)果的髓堪。
要注意的是,每一個(gè) AggregateResult 類的實(shí)例都是一個(gè) SObject 類型娘荡,并且是只讀的干旁。我們在用其中的成員時(shí),需要進(jìn)行顯示轉(zhuǎn)換它改。
比如:
// 得到所有“機(jī)會”記錄中“數(shù)額”字段的平均值
AggregateResult[] groupedResultsAverage = [SELECT AVG(Amount) avgAmount FROM Opportunity];
Decimal avgAmount = (Decimal) groupedResultsAverage[0].get('avgAmount');
// 得到所有“機(jī)會”記錄中“數(shù)額”字段值大于100的“數(shù)額”總值疤孕,并根據(jù)“客戶”字段分組合并查詢
AggregateResult[] groupedResults = [SELECT AccountId, SUM(Amount) sumAmount FROM Opportunity WHERE Amount > 100 GROUP BY AccountId];
for (AggregateResult ar : groupedResults) {
System.debug('AccountId is: ' + (Id) ar.get('AccountId'));
System.debug('Sum is: ' + (Decimal) ar.get('sumAmount'));
}
COUNT() 在查詢中的唯一性
在使用 COUNT() 函數(shù)時(shí),有一點(diǎn)比較特殊:它必須是查詢語句中的唯一一個(gè)元素央拖。
比如:
// 查詢所有“客戶”對象記錄的總數(shù)
Integer countAccount = [SELECT COUNT() FROM Account];
System.debug('Count of Accounts is: ' + countAccount);