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

Azure Cosmos DB嵌套colorCounts按location分组求平均的查询方案

Azure Cosmos DB 嵌套对象字段分组求平均实现方法

原始文档结构

[
    {
        "id": "id_1",
        "location": "location_1",
        "colorCounts": {
            "red" : 1,
            "blue": 0,
            "yellow": 1
        }
    },
    {
        "id": "id_2",
        "location": "location_1",
        "colorCounts": {
            "red" : 0,
            "blue": 0,
            "yellow": 0
        }
    }
]

需求说明

按location字段分组,对colorCounts嵌套对象中的每个颜色数值求平均,最终得到每个location对应的各颜色平均统计值。

问题分析

直接使用AVG(c.colorCounts)无法得到预期结果,因为AVG函数仅支持对单个数值字段计算平均值,不能直接作用于整个嵌套对象。

解决方案

针对colorCounts下的每个颜色字段单独调用AVG函数,再将结果组合成目标结构:

SELECT 
    c.location,
    {
        "red": AVG(c.colorCounts.red),
        "blue": AVG(c.colorCounts.blue),
        "yellow": AVG(c.colorCounts.yellow)
    } AS colorCounts
FROM c
GROUP BY c.location

结果验证

执行上述查询后,将得到符合预期的结果:

{
    "location": "location_1",
    "colorCounts": {
        "red" : 0.5,
        "blue": 0,
        "yellow": 0.5
    }
}

扩展说明

如果colorCounts中的颜色字段不固定(动态增减),可以考虑使用用户定义函数(UDF)或通过ARRAY函数展开嵌套对象后再做聚合计算,但固定字段场景下上述方法最直接高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:05:21