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

SQL需求:仅当8天窗口内非空值≥6个时计算滚动平均值

解决方案

要实现仅当8天窗口内非空VALUEX数量≥6时计算滚动平均值,你需要在原查询的CASE语句中增加对窗口内非空值数量的判断,具体修改如下:

  1. 在窗口中使用COUNT(VALUEX)统计非空值数量(COUNT(列名)会自动忽略NULL值)
  2. 同时保留原有的行号判断(确保窗口包含足够的记录行),并将两个条件用AND连接
  3. 仅当两个条件都满足时,才返回滚动平均值,否则返回NULL

修改后的完整查询语句:

SELECT
    CASE WHEN
        -- 确保窗口有至少8条记录(对应前8天的数据行)
        ROW_NUMBER() OVER (ORDER BY DATEX) > 8
        -- 同时检查窗口内非空VALUEX数量≥6
        AND COUNT(VALUEX) OVER (
            ORDER BY DATEX DESC
            ROWS BETWEEN 1 FOLLOWING AND 8 FOLLOWING
        ) >= 6
        THEN
            AVG(VALUEX) OVER (
                ORDER BY DATEX DESC
                ROWS BETWEEN 1 FOLLOWING AND 8 FOLLOWING
            )
        ELSE NULL 
    END AS rolling_avg_8d
FROM (
    SELECT * FROM TABLEX
) s

关键说明

  • COUNT(VALUEX) OVER (...):精准统计窗口内非空的VALUEX条数,自动排除NULL值
  • 两个条件的逻辑:先通过行号判断窗口是否有足够的记录行,再验证有效数据占比是否达标,避免因数据缺失导致的无效计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:42:46