如何在 Azure DocumentDB 上进行聚合(AVG、SUM、MAX 等)?
How to do aggregation (AVG, SUM, MAX etc.) on Azure DocumentDB?
我正在试用 Azure DocumentDB 及其 documentation says aggregation is supported。事实上,我可以通过以下方式做到 COUNT
:
SELECT value COUNT(1) FROM c WHERE c.id = 'someid'
但是,如果我按照相同的语法进行其他类型的聚合,它似乎不起作用。
SELECT value MAX(value) FROM c WHERE c.id = 'someid'
报错。这与 MIN.
相同
似乎不支持聚合(即使文档另有说明)。或者有不同的方法吗?
要使 MAX()
正常工作,您需要在给定的 属性 上进行聚合。例如,如果您有一些文档带有 range
属性:
{
"id": "max1",
"range": 50
}
{
"id": "max2",
"range": 20
}
您将通过以下方式获得 range
的最大值:
SELECT MAX(c.range) from c
哪个returns:
[
{
"": 50
}
]
或
SELECT VALUE MAX(c.range) from c
哪个returns:
[
50
]
注意:在您的问题示例中,您使用了 c.value
。 VALUE
是保留字,因此您需要引用为 c['value']
。例如:
SELECT VALUE MAX(c['value']) from c
我正在试用 Azure DocumentDB 及其 documentation says aggregation is supported。事实上,我可以通过以下方式做到 COUNT
:
SELECT value COUNT(1) FROM c WHERE c.id = 'someid'
但是,如果我按照相同的语法进行其他类型的聚合,它似乎不起作用。
SELECT value MAX(value) FROM c WHERE c.id = 'someid'
报错。这与 MIN.
相同似乎不支持聚合(即使文档另有说明)。或者有不同的方法吗?
要使 MAX()
正常工作,您需要在给定的 属性 上进行聚合。例如,如果您有一些文档带有 range
属性:
{
"id": "max1",
"range": 50
}
{
"id": "max2",
"range": 20
}
您将通过以下方式获得 range
的最大值:
SELECT MAX(c.range) from c
哪个returns:
[
{
"": 50
}
]
或
SELECT VALUE MAX(c.range) from c
哪个returns:
[
50
]
注意:在您的问题示例中,您使用了 c.value
。 VALUE
是保留字,因此您需要引用为 c['value']
。例如:
SELECT VALUE MAX(c['value']) from c