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

如何简化数据分组对比及占比计算的SQL实现?

简化后的SQL实现

当然有更巧妙的简化方式,用条件聚合就能替代原有的UNION+PIVOT逻辑,代码更紧凑,执行效率也更高(只需要一次生成数据集,而非两次生成后合并):

SELECT
    SUM(CASE WHEN level <=5 THEN level ELSE 0 END) AS LESS_THAN,
    SUM(CASE WHEN level >5 THEN level ELSE 0 END) AS GREATER_THAN,
    ROUND(
        SUM(CASE WHEN level <=5 THEN level ELSE 0 END) / 
        SUM(level),
        4
    ) AS percentage
FROM dual
CONNECT BY level <=10;

简化思路说明

  • 直接通过CONNECT BY生成1到10的序列,无需拆分两次再合并
  • 用CASE语句配合SUM实现分组求和,替代PIVOT的列转行逻辑
  • 占比计算直接用组内总和除以整体总和,避免重复计算LESS_THAN+GREATER_THAN(两者之和就是所有level的总和)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:24:50