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

MariaDB按唯一键遇零分段聚合UAS值并统计事件次数的SQL问题

MariaDB按连续非零UAS分段统计方案

你需要实现的是典型的SQL孤岛(连续值分组)统计需求,MariaDB 10.2及以上版本支持窗口函数,可直接使用如下查询适配Grafana场景:

WITH filtered_data AS (
    -- 第一步:过滤有效数据,应用Grafana时间范围、排除异常值
    SELECT 
        pv.id,
        pv.time,
        pv.uas,
        pd.system,
        pd.parameter_label
    FROM parameter_health.parameter_uasvalue pv
    LEFT JOIN parameter_health.parameter_detail pd ON pd.id = pv.id
    WHERE $__timeFilter(pv.time)
      AND pv.uas != '-1'
),
group_mark AS (
    -- 第二步:给连续非零段打分组标记,每遇到0则标记+1
    SELECT 
        *,
        SUM(CASE WHEN uas = 0 THEN 1 ELSE 0 END) OVER (
            PARTITION BY id 
            ORDER BY time ASC
        ) AS seg_mark
    FROM filtered_data
)
-- 第三步:按参数和分段标记聚合统计
SELECT 
    system,
    parameter_label,
    COUNT(DISTINCT seg_mark) AS '总事件次数',
    SUM(uas) AS '总不可用秒数(Total UAS)'
FROM group_mark
WHERE uas != 0 -- 过滤全0的无效段
GROUP BY system, parameter_label;

补充说明

如果你需要查看每一次异常事件的单独UAS求和结果,只需要把最后一层的聚合逻辑替换为按id, seg_mark分组,输出SUM(uas)即可,对应你示例中的输出就是1030、1400、900三条结果。如果你的MariaDB版本低于10.2不支持窗口函数,可以用用户变量替代窗口函数实现分组标记,核心逻辑和上述方案一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:07