首页 > 解决方案 > 如何使用 SQL API 在 Azure Cosmos DB 中使用聚合函数

问题描述

我试图在 cosmosdb 中使用聚合函数(SUM)但没有成功。

我需要计算按 SUPPLIER 和 PARTNUMBERID 分组的 qty 属性值的总和。我尝试使用 VALUE 参数,但收到一个 sintaxe 错误消息(“语法错误,'VALUE' 附近的语法不正确),当我不使用 VALUE 参数时,我收到另一个错误消息(“跨分区查询仅支持'VALUE' 用于聚合。" )

我的问题是这个查询的正确语法是什么?

查询:

SELECT   od.SUPPLIER
        ,p.PARTNUMBERID
        ,VALUE SUM(p.QTY) AS QTY
FROM    od
JOIN    p IN od.PARTNUMBER
GROUP   BY od.SUPPLIER, p.PARTNUMBERID

SELECT   od.SUPPLIER
        ,p.PARTNUMBERID
        ,SUM(p.QTY) AS QTY
FROM    od
JOIN    p IN od.PARTNUMBER
GROUP   BY od.SUPPLIER, p.PARTNUMBERID

我的文档结构:

[
    {
    "DOCUMENTDATE": "2021-07-20T00:00:00",
    "DOCID": "DOC001",
    "CUSTOMER": "ABCDEF",
    "SUPPLIER": "XPTO",
    "PARTNUMBER": [
        {
            "PARTNUMBERID": "PARTNUMBER0001",
            "QTY": 530,
            "QTYSENT": 74816.306
        },
        {
            "PARTNUMBERID": "PARTNUMBER0002",
            "QTY": 593,
            "QTYSENT": 76432
        }]
    },
    {
    "DOCUMENTDATE": "2021-07-20T00:00:00",
    "DOCID": "DOC002",
    "CUSTOMER": "ABCDEF",
    "SUPPLIER": "ZZZZ",
    "PARTNUMBER": [
        {
            "PARTNUMBERID": "PNZZZZ0001",
            "QTY": 530,
            "QTYSENT": 74816.306
        },
        {
            "PARTNUMBERID": "PNZZZZ0002",
            "QTY": 593,
            "QTYSENT": 76432
        }]
    }
]

感谢您的帮助

标签: azure-cosmosdbazure-cosmosdb-sqlapi

解决方案


使用单个分区,当我尝试时,您的第二个查询运行良好。

在此处输入图像描述

或者

select value total 
from
(
 SELECT   od.SUPPLIER
    ,p.PARTNUMBERID
    ,SUM(p.QTY) AS QTY
 FROM    od
 JOIN    p IN od.PARTNUMBER
 GROUP   BY od.SUPPLIER, p.PARTNUMBERID
) as total

在此处输入图像描述

注意:如果您有多个分区,请在 where 子句中指定分区。


推荐阅读