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

如何将结果集中占比低于15%的记录合并为单行?

实现低占比记录合并的SQL方案

这是个非常典型的分组聚合需求,用SQL就能快速实现,我给你两种通用的方案,适配绝大多数关系型数据库(MySQL、PostgreSQL、SQL Server等):

方法一:使用CASE WHEN分组求和

这种方法通过对Name字段做条件映射,直接分组计算总和,代码简洁高效:

SELECT
    CASE
        WHEN Percentage < 15 THEN 'Everyone else'
        ELSE Name
    END AS Name,
    SUM(Percentage) AS Percentage
FROM your_table_name
GROUP BY
    CASE
        WHEN Percentage < 15 THEN 'Everyone else'
        ELSE Name
    END
ORDER BY Percentage DESC;

逻辑说明:

  • 条件映射:用CASE语句把所有占比低于15%的记录统一标记为Everyone else,其余保留原名称
  • 分组求和:按照标记后的名称分组,对Percentage求和
  • 排序优化:最后按占比降序排序,让结果和你预期的一致

方法二:拆分查询后合并结果

如果你觉得第一种方法的分组逻辑有点绕,也可以拆成两个查询,用UNION ALL合并结果,逻辑更直观:

-- 先取出占比>=15%的原始记录
SELECT Name, Percentage
FROM your_table_name
WHERE Percentage >= 15

UNION ALL

-- 再计算所有占比<15%的记录总和
SELECT 'Everyone else' AS Name, SUM(Percentage) AS Percentage
FROM your_table_name
WHERE Percentage < 15

ORDER BY Percentage DESC;

注意点:

  • 如果你的数据库中没有占比低于15%的记录,第二个查询会返回空行,这时可以给SUM(Percentage)加个COALESCE来避免,比如COALESCE(SUM(Percentage), 0)
  • 优先用UNION ALL:UNION ALL比UNION效率更高,因为它不会去重,这里我们的两个查询结果不会重复,所以用UNION ALL更合适

两种方法都能得到你想要的结果:

Name | Percentage
Everyone else| 17
Sam | 24
Elvis | 59

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:34:20