如果我将 GROUP BY 子句与自定义聚合函数一起使用,我的聚合函数将返回两个值。我尝试将 def 更改为 defg,但出现错误:“列 'high_low_ratio_mean' 必须使用聚合函数。RefId:S02022”
defg high_to_low_ratio(high,low){
high_to_low = high\low-1
Amp_Mean = avg(high_to_low)
return high_to_low,Amp_Mean
}
select high_to_low_ratio(high, low) as `high_low_ratio_mean`Amp_Mean
from OneData
group by SecurityID
order by SecurityID;
如果返回两个聚合值,可以参考以下脚本编写:
defg calc(x){
return sum(x), avg(x)
}
select calc(close) as `sum`avg from t group by securityid
由于您要返回一个聚合结果和一个向量,因此需要使用 toArray 来聚合该向量,如下所示:
defg calc(high, low){
hl = high\low - 1
m = avg(hl)
return hl, m
}
select toArray(calc(high, low)) as `hl`mean from t group by securityid
但是这样做也会将均值的聚合值转换为数组向量。在这种情况下,建议将向量和聚合度量分离到不同的函数中进行计算。