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

SQL Server中分组B列<5%的记录并保留>5%的单行显示

解决方案:合并低占比记录并保留高占比记录

直接用CASE表达式配合分组聚合就能实现,不需要拆分语句再用UNION合并,一次扫描表就能得到结果:

SELECT 
    -- 把B<5%的记录统一标记为Others,其余保留原A值
    CASE WHEN B >= 0.05 THEN A ELSE 'Others' END AS A,
    -- 计算每组的占比总和
    SUM(B) AS B
FROM YourTable
-- 按分组标记聚合
GROUP BY CASE WHEN B >= 0.05 THEN A ELSE 'Others' END
-- 按占比降序排列,让高占比和Others的顺序更合理
ORDER BY B DESC;

注意事项:

  • 如果你的B列是带%符号的字符串类型(比如'3.5%'),需要先转成数值再判断:
    SELECT 
        CASE WHEN CAST(REPLACE(B, '%', '') AS DECIMAL(5,2))/100 >= 0.05 THEN A ELSE 'Others' END AS A,
        SUM(CAST(REPLACE(B, '%', '') AS DECIMAL(5,2))/100) AS B
    FROM YourTable
    GROUP BY CASE WHEN CAST(REPLACE(B, '%', '') AS DECIMAL(5,2))/100 >= 0.05 THEN A ELSE 'Others' END
    ORDER BY B DESC;
    
  • 这个方法比UNION更高效,因为只需要扫描一次数据表,逻辑也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:14:56