You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SOQL查询客户非最新记录中的最低分数

解决方案

要实现排除客户最新记录后获取最低分,你可以通过以下两种SOQL查询方式解决:

方式一:聚合查询直接计算最低分

这种方式通过关联查询和子过滤,直接按客户分组计算排除最新记录后的最低分,效率较高:

SELECT c.Id, MIN(m.score__c) AS min_score_excluding_latest
FROM Client__c c
INNER JOIN my_custom_object__c m ON c.Id = m.client__c
WHERE NOT (m.client__c = c.Id AND m.date__c = (
    SELECT MAX(date__c) 
    FROM my_custom_object__c 
    WHERE client__c = c.Id
))
GROUP BY c.Id
HAVING COUNT(m.Id) > 1
  • 逻辑说明:先通过子查询获取每个客户的最新记录日期,排除该日期对应的所有记录后,对剩余记录按客户分组取最低分
  • HAVING COUNT(m.Id) > 1 用于过滤掉只有一条记录的客户(排除后无数据可计算)

方式二:嵌套子查询保持原结构

如果你需要保留和原查询类似的嵌套子查询格式,可以用以下语句:

SELECT Id,
       (SELECT score__c, date__c
        FROM my_custom_objects__r
        WHERE Id != (
            SELECT Id
            FROM my_custom_object__c
            WHERE client__c = Client__c.Id
            ORDER BY date__c DESC, Id DESC
            LIMIT 1
        )
        ORDER BY score__c ASC
        LIMIT 1)
FROM Client__c
WHERE Id IN (SELECT client__c FROM my_custom_object__c)
AND (SELECT COUNT(Id) FROM my_custom_objects__r) > 1
  • 逻辑说明:子查询中先排除客户的最新记录(通过ORDER BY date__c DESC, Id DESC确保唯一获取最新记录),再从剩余记录中取最低分
  • AND (SELECT COUNT(Id) FROM my_custom_objects__r) > 1 同样过滤掉只有一条记录的客户

注意事项

  • 如果存在同一客户多条记录共享最新日期的情况,方式一会排除所有该日期的记录,方式二则只排除最新创建的那一条(通过Id DESC排序),可根据你的业务需求选择
  • 若客户只有一条记录,两种方式都会自动过滤,因为排除后无剩余记录可计算最低分

内容的提问来源于stack exchange,提问作者Kees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:45:35