在 Apex 中使用合并统计查询

SOQL 中的合并统计查询

在 SOQL 中,我们可以使用一系列函数来进行合并统计查询。它们的功能和标准 SQL 中的 SUM(),COUNT() 等函数类似。

官方文档

Apex 中使用合并统计查询

在 Apex 中,我们可以通过调用合并查询的 SOQL 语句来得到系列结果。在 Apex 中,AggregateResult 类是专门用来存储这些结果的。

官方文档

要注意的是,每一个 AggregateResult 类的实例都是一个 SObject 类型,并且是只读的。我们在用其中的成员时,需要进行显示转换。

比如:

// 得到所有“机会”记录中“数额”字段的平均值
AggregateResult[] groupedResultsAverage = [SELECT AVG(Amount) avgAmount FROM Opportunity];
Decimal avgAmount = (Decimal) groupedResultsAverage[0].get('avgAmount');

// 得到所有“机会”记录中“数额”字段值大于100的“数额”总值,并根据“客户”字段分组合并查询
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() 函数时,有一点比较特殊:它必须是查询语句中的唯一一个元素。

比如:

// 查询所有“客户”对象记录的总数
Integer countAccount = [SELECT COUNT() FROM Account];
System.debug('Count of Accounts is: ' + countAccount);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容