首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure Cosmos DB中使用SUM累加函数

如何在Azure Cosmos DB中使用SUM累加函数
EN

Stack Overflow用户
提问于 2020-01-07 01:24:59
回答 1查看 1.3K关注 0票数 1

official documentation中所述,Cosmos Db SQL API支持聚合函数。然而,我找不到任何像样的查询示例来对项目的多级文档结构执行聚合。这是我的Cosmos DB容器项的结构。我正在使用SQL API

代码语言:javascript
复制
{
"id": "1",
"invoiceNo": "INV0001",
"date": "2019/12/20",
"userId": "cashier1",
"invoiceDetails": [
    {
        "itemName": "Item 1",
        "qty": 1,
        "unitPrice": 100,
        "lineTotal": 100
    },
    {
        "itemName": "Item 2",
        "qty": 3,
        "unitPrice": 200,
        "lineTotal": 600
    },
    {
        "itemName": "Item 6",
        "qty": 1,
        "unitPrice": 300,
        "lineTotal": 300
    }
],
"_rid": "h9Q6AKtS7i0BAAAAAAAAAA==",
"_self": "dbs/h9Q6AA==/colls/h9Q6AKtS7i0=/docs/h9Q6AKtS7i0BAAAAAAAAAA==/",
"_etag": "\"1500611a-0000-1800-0000-5e00fbd40000\"",
"_attachments": "attachments/",
"_ts": 1577122772

}

我想使用SQL查询来获得invoiceDetails.lineTotal的总和。非常感谢您的回答

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-07 03:17:31

像这样使用SELECT...FROM...IN只允许您处理文档的一部分,在本例中是invoiceDetails数组。

所以这个查询:

代码语言:javascript
复制
SELECT *
FROM a in c.invoiceDetails

产生:

代码语言:javascript
复制
[
    {
        "itemName": "Item 1",
        "qty": 1,
        "unitPrice": 100,
        "lineTotal": 100
    },
    {
        "itemName": "Item 2",
        "qty": 3,
        "unitPrice": 200,
        "lineTotal": 600
    },
    {
        "itemName": "Item 6",
        "qty": 1,
        "unitPrice": 300,
        "lineTotal": 300
    }
]

然后,您可以使用SUM对数组中的项进行求和。

代码语言:javascript
复制
SELECT SUM(a.lineTotal) AS SumLineTotal
FROM a in c.invoiceDetails

并获取:

代码语言:javascript
复制
[
    {
        "SumLineTotal": 1000
    }
]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59616403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档