在查询中使用数组的中值作为参数
我想将结果中位数用作计算“较大”的参数。我该怎么做?
{
"h": {
"data":
[1,3,5,2,6,8,4,23,7,3]
}
}
jsonata expression:
[{
"median" : $sort(h.data)[5],
"larger" : h.data.($ > 5)
}]
I want to use the resulting median as the parameter for calculating "larger". How can I do this?
{
"h": {
"data":
[1,3,5,2,6,8,4,23,7,3]
}
}
jsonata expression:
[{
"median" : $sort(h.data)[5],
"larger" : h.data.($ > 5)
}]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
解决方案 - 您缺少的密钥是变量。另外,您的集合的中位数为
4.5
,而不是5
,因为值甚至是,因此中位数变为平均两个中间数的平均值。在我的解决方案中,我计算中位数,使用
$ variable_name:=<计算>
语法分配给变量,并在数组过滤中进一步参考该结果。请记住,如果您使用变量,则必须包裹整个表达式
(...)
。Solution - The key you're missing is the usage of variables. Also, the median of your set is
4.5
, not5
because the count of values is even, so the median becomes an average of two middle numbers.In my solution, I calculate median, assign it to a variable using
$variable_name := <calculation>
syntax, and refer to that result further in the array filtering.Keep in mind that if you're using variables, whole expression must be wrapped in parenthesis
( ... )
.