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

InfluxDB count()函数返回错误值的问题咨询

InfluxDB count()函数返回错误值的问题咨询

我先理清楚你的问题:你在InfluxDB 1.8.6里存储Jenkins相关数据,执行不带count的嵌套查询时,能得到15条符合条件的SUCCESS记录,但其中存在重复的条目(比如test1的1600构建出现多次,test2的1669也重复)。但当你在外层用count(build_number)统计时,结果直接返回15,这和你预期的去重后的计数不符,是吧?

问题原因分析

你遇到的核心问题是子查询返回的15条结果里包含重复的记录,而count()函数默认会统计所有返回的行,不管是否重复。从你给出的无count查询结果来看,确实有很多重复的project_name + build_number组合,比如test1的1600构建出现了3次,test2的1669出现了4次,这些重复行都会被count()算进去,所以最终得到15,而不是你想要的“不同成功构建的数量”。

另外还要注意:InfluxDB的LIMIT 15是先取最新的15条数据,再过滤SUCCESS,这15条里可能本身就包含重复的构建记录,这也是导致count结果不符合预期的原因之一。

解决方案

根据你的需求,应该是要统计去重后的成功构建数量,这里分两种常见场景给出方案:

1. 统计去重后的所有成功构建总数

如果你想得到的是“不重复的成功构建条目数”,可以在子查询里先对project_name和build_number做去重,再统计:

SELECT count(distinct build_number)
FROM (
    SELECT DISTINCT project_name, build_number, build_result
    FROM "jenkins_data"
    WHERE (
        "project_name" =~ /^(?i)(test1|test2)$/ AND
        "project_path" =~ /.*(?i)Playground.*$/ AND
        "build_result" = 'SUCCESS'
    )
    ORDER BY time DESC
    LIMIT 15
)

或者更高效一点,把build_result = 'SUCCESS'放到内层查询,减少外层处理的数据量:

SELECT count(distinct build_number)
FROM (
    SELECT DISTINCT project_name, build_number
    FROM "jenkins_data"
    WHERE (
        "project_name" =~ /^(?i)(test1|test2)$/ AND
        "project_path" =~ /.*(?i)Playground.*$/ AND
        "build_result" = 'SUCCESS'
    )
    ORDER BY time DESC
    LIMIT 15
)

2. 按项目分组统计成功构建数

如果你想分别统计test1和test2各自的成功构建数,可以用GROUP BY:

SELECT count(distinct build_number) AS success_build_count
FROM (
    SELECT project_name, build_number
    FROM "jenkins_data"
    WHERE (
        "project_name" =~ /^(?i)(test1|test2)$/ AND
        "project_path" =~ /.*(?i)Playground.*$/ AND
        "build_result" = 'SUCCESS'
    )
    ORDER BY time DESC
    LIMIT 15
)
GROUP BY project_name

额外说明

  • 为什么原始查询返回15?因为子查询返回的15条数据里,所有行的build_number都被count了,哪怕重复的也会被算进去,这是count()函数的默认行为——统计行数,而不是去重后的数量。
  • 如果你只是想统计子查询里SUCCESS的行数(不管重复),那原始查询的结果是对的,但显然这不是你想要的,所以核心是加上DISTINCT关键字实现去重统计。

备注:内容来源于stack exchange,提问作者Sugatur Deekshith S N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:54:08