You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vespa YQL分组查询:如何排除非整数计算operatingWeight最大值

Vespa YQL分组统计整数类型值的解决方案

问题描述

我正在修改代码库中的Vespa查询,通过分组来统计最小值/最大值。目前需要获取operatingWeight字段的最大值,但查询返回的结果远高于数据库中的实际最大值。我猜测是数据库中存在非整数的decimal类型值干扰了计算。

当前查询的分组部分如下:

all(
            all( group(make) each( group(model) each( output(count()) ) ) )
            all( group(categoryId) each( output(count()) ) )
            all( group(1) each( output(min(price), max(price)) ) as(priceRange) )
            all( group(1) each( output(min(hours), max(hours)) ) as(hoursRange) )
            all( group(1) each( output(max(operatingWeight)) ) as(maxOperatingWeight) )
            )

我尝试用以下写法过滤整数,但报错了:

all( group(1) where((operatingWeight % 1) == 0) each(output(max(operatingWeight))) as(maxOperatingWeight) )

我熟悉SQL但对YQL不太了解,求可行的实现方案。

解决方案

Vespa YQL中,分组的where子句并非用于过滤参与聚合的文档,正确的做法是在聚合函数内部添加where条件,筛选出符合要求的文档参与计算。

你可以通过floor(operatingWeight) == operatingWeight来判断operatingWeight是否为整数(整数的floor值与自身相等,非整数则不相等),修改后的maxOperatingWeight分组逻辑如下:

all( group(1) each( output(max(operatingWeight) where floor(operatingWeight) == operatingWeight) ) as(maxOperatingWeight) )

将这段代码替换原查询中对应的maxOperatingWeight分组行即可,这样统计出的最大值只会包含整数类型的operatingWeight值,以此验证你的猜想。

内容的提问来源于stack exchange,提问作者CourtneyJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:19:55