Azure Cosmos DB如何按数值区间分组统计各区间文档数量
Azure Cosmos DB 数值区间分组统计方案
你之前编写的查询无法生效的核心原因是:将三个独立的布尔判断作为分组维度,会生成8种交叉组合的分组结果,无法得到你需要的三个互斥区间的统计值。
正确查询语句
SELECT CASE WHEN c.TestValue < 10 THEN "Less than 10" WHEN c.TestValue >= 10 AND c.TestValue < 100 THEN "Between 10 and 100" ELSE "More than 100" END AS groupedKey, COUNT(1) AS groupedValue FROM c GROUP BY CASE WHEN c.TestValue < 10 THEN "Less than 10" WHEN c.TestValue >= 10 AND c.TestValue < 100 THEN "Between 10 and 100" ELSE "More than 100" END
相关说明
- 该查询通过
CASE表达式为每条文档的TestValue字段映射对应的区间标签作为groupedKey,再按该标签分组统计数量,返回结果完全符合你期望的格式 - 对应你给出的测试数据,该查询返回的统计结果为:
- 小于10的文档数量为6
- 10到100之间的文档数量为3
- 大于100的文档数量为1
- 如果后续需要调整区间范围,直接修改
CASE逻辑中的判断条件即可 - 数据量较大时建议提前给
TestValue字段添加索引,可大幅提升查询性能
内容的提问来源于stack exchange,提问作者Steve Norwood
相关产品推荐
相关产品推荐

