gpt4 book ai didi

arangodb - AQL 聚合函数语法

转载 作者:行者123 更新时间:2023-12-01 12:42:17 30 4
gpt4 key购买 nike

像 sum() 这样的聚合函数的语法到底是什么?

例如,采用以下结构:

let json = {
"ages": {
"age": [
"20",
"30",
"40"
]
}
}

还有那个

for age in json.ages.age return age

返回

 ["20", "30", "40"]

在 Arango 2.0.4 中,以下所有代码片段都返回“[1542] 调用函数‘SUM()’时使用的参数类型无效”:

// LR
let ages = (for age in json.ages.age return age)
return sum(ages)

// LR
let ages = (
for age in json.ages.age
return age
)
return sum((for age in json.ages.age return age))

// R
return sum((for age in json.ages.age return age))

正确的语法是什么?

语法页面(http://www.arangodb.org/manuals/current/Aql.html#AqlFunctionsList)似乎没有任何相关示例。

我能找到的最接近语法示例的是:https://www.arangodb.org/foxx

controller.get("/revenue/:year", function (req, res) {
var query = "RETURN SUM((FOR bill IN billcollection FILTER bill.year == @year RETURN bill.amount))";
var stmt = db._createStatement({ "query": query});
stmt.bind("year",parseInt(req.params("year"),10));
var c = stmt.execute();
res.json(c);
});

但上面的语法似乎对我来说是失败的。

哪里有更详细的语法引用?

最佳答案

您的方法是正确的,但是您遗漏了文档中的一个小问题。 ;)

在 SUM() 的文档中说:

SUM(list) : returns the sum of the values in list. This requires the elements in list to be numbers. null values are ignored.

(文档引用:https://www.arangodb.org/manuals/current/Aql.html#AqlFunctionsList)

注意"This requires the elements in list to be numbers"

因此,您的 JSON 示例应该在列表中包含数字,而不是字符串。

let json = {
"ages": {
"age": [
20,
30,
40
]
}
}

let ages = (for age in json.ages.age return age)
return sum(ages)

将上面的代码片段复制并运行到您的 AQL 编辑器中应该会产生所需的结果:

[
90
]

当然,您也可以保持 json 不变,并通过相应地更改 AQL 查询将字符串类型转换为数字:

let json = {
"ages": {
"age": [
"20",
"30",
"40"
]
}
}

let ages = (for age in json.ages.age return TO_NUMBER(age))
return sum(ages)

关于arangodb - AQL 聚合函数语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23257829/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com