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

如何高效统计特定价值区间内的账户数量及相关指标

高效统计多价值区间的SQL方案(适配SSRS)

嘿,完全懂你这种重复写SQL的痛苦!没必要搞15条语句,用条件分组+聚合函数的方式,只需要一次表扫描就能搞定所有区间的统计,高效还省心,而且输出的数据集能直接给SSRS的三个图表复用。

核心思路

用CASE WHEN把每个账户的Value映射到对应的区间标签,然后按这个标签分组,一次性计算每个区间的账户数和平均价值。这样只需要执行一次查询,比多次单独查询效率高很多,尤其是数据量较大的时候。

具体SQL代码

SELECT
    -- 定义价值区间标签
    CASE
        WHEN Value BETWEEN 100 AND 10000 THEN '$100-$10000'
        WHEN Value BETWEEN 11000 AND 15000 THEN '$11000-$15000'
        WHEN Value BETWEEN 16000 AND 20000 THEN '$16000-$20000'
        WHEN Value BETWEEN 21000 AND 30000 THEN '$21000-$30000'
        WHEN Value > 30000 THEN '$30000+'
        ELSE '其他' -- 可选,用来处理不在目标区间的记录(比如小于100的)
    END AS ValueRange,
    COUNT(acct) AS 'Number of Plans',
    AVG(Value) AS 'Average Value'
FROM #RT1
WHERE 
    InstaCode = 'S'
    AND Value >= 100 -- 过滤掉小于100的记录,避免出现在结果里(如果不需要的话)
GROUP BY
    -- 分组逻辑和上面的CASE保持一致
    CASE
        WHEN Value BETWEEN 100 AND 10000 THEN '$100-$10000'
        WHEN Value BETWEEN 11000 AND 15000 THEN '$11000-$15000'
        WHEN Value BETWEEN 16000 AND 20000 THEN '$16000-$20000'
        WHEN Value BETWEEN 21000 AND 30000 THEN '$21000-$30000'
        WHEN Value > 30000 THEN '$30000+'
        ELSE '其他'
    END
ORDER BY
    -- 强制按区间顺序排序,避免结果乱序影响SSRS图表展示
    CASE ValueRange
        WHEN '$100-$10000' THEN 1
        WHEN '$11000-$15000' THEN 2
        WHEN '$16000-$20000' THEN 3
        WHEN '$21000-$30000' THEN 4
        WHEN '$30000+' THEN 5
        ELSE 6
    END

优化版(更易维护)

如果觉得重复写CASE麻烦,可以用CTE(公共表表达式)把区间逻辑抽出来,代码更简洁,后续修改区间也只需要改一处:

WITH AccountRanges AS (
    SELECT
        acct,
        Value,
        -- 定义区间标签
        CASE
            WHEN Value BETWEEN 100 AND 10000 THEN '$100-$10000'
            WHEN Value BETWEEN 11000 AND 15000 THEN '$11000-$15000'
            WHEN Value BETWEEN 16000 AND 20000 THEN '$16000-$20000'
            WHEN Value BETWEEN 21000 AND 30000 THEN '$21000-$30000'
            WHEN Value > 30000 THEN '$30000+'
            ELSE '其他'
        END AS ValueRange,
        -- 预定义排序序号
        CASE
            WHEN Value BETWEEN 100 AND 10000 THEN 1
            WHEN Value BETWEEN 11000 AND 15000 THEN 2
            WHEN Value BETWEEN 16000 AND 20000 THEN 3
            WHEN Value BETWEEN 21000 AND 30000 THEN 4
            WHEN Value > 30000 THEN 5
            ELSE 6
        END AS RangeOrder
    FROM #RT1
    WHERE 
        InstaCode = 'S'
        AND Value >= 100
)
SELECT
    ValueRange,
    COUNT(acct) AS 'Number of Plans',
    AVG(Value) AS 'Average Value'
FROM AccountRanges
GROUP BY ValueRange, RangeOrder
ORDER BY RangeOrder

SSRS使用技巧

这个查询输出的是一个包含所有区间统计结果的数据集,你可以直接把它绑定到三个图表上:

  • 比如第一个图表展示各区间的Number of Plans,第二个展示Average Value,第三个可以做组合展示;
  • 不需要再创建多个数据集,减少维护成本,而且数据同步性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:47:21