如何在 Azure Cosmos DB 中使用 SUM 聚合函数
How to use SUM aggragate functions in Azure Cosmos DB
如 official documentation 中所述,Cosmos Db SQL API 支持聚合函数。但是,我找不到任何像样的查询示例来对项目的多级文档结构执行聚合。
这是我的 Cosmos DB 容器项的结构。我正在使用 SQL API
{
"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 的总和。非常感谢您的回答
像这样使用 SELECT...FROM...IN 允许您只处理文档的一部分,在本例中为 invoiceDetails 数组。
所以这个查询:
SELECT *
FROM a in c.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
}
]
然后您可以使用 SUM 对数组中的项目求和。
SELECT SUM(a.lineTotal) AS SumLineTotal
FROM a in c.invoiceDetails
并得到:
[
{
"SumLineTotal": 1000
}
]
如 official documentation 中所述,Cosmos Db SQL API 支持聚合函数。但是,我找不到任何像样的查询示例来对项目的多级文档结构执行聚合。 这是我的 Cosmos DB 容器项的结构。我正在使用 SQL API
{
"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 的总和。非常感谢您的回答
像这样使用 SELECT...FROM...IN 允许您只处理文档的一部分,在本例中为 invoiceDetails 数组。
所以这个查询:
SELECT *
FROM a in c.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
}
]
然后您可以使用 SUM 对数组中的项目求和。
SELECT SUM(a.lineTotal) AS SumLineTotal
FROM a in c.invoiceDetails
并得到:
[
{
"SumLineTotal": 1000
}
]