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

如何在Redshift或SQL中计算行值占对应列总合计的占比

Redshift 计算每日销售额占比实现方案

你可以直接使用Redshift支持的窗口函数实现需求,无需提前预计算总销售额再做表关联,同时过滤掉合计行即可:

基础实现代码

SELECT
    date,
    sales,
    ROUND(sales::FLOAT / SUM(sales) OVER (), 4) AS avg
FROM
    替换为你的实际表名
WHERE
    date != 'Grand total' -- 过滤合计行
ORDER BY
    date

注意说明

  • 整数除法兼容:Redshift默认整数相除会截断返回整数,因此需要将sales转为FLOAT类型,避免10/215直接返回0的问题
  • 格式自定义:如果需要输出百分比格式,可将计算逻辑修改为以下写法,示例保留2位小数百分比:
    ROUND((sales::FLOAT / SUM(sales) OVER ()) * 100, 2) || '%' AS avg
    
  • 动态合计行过滤:如果你的合计行是通过ROLLUP/GROUPING SETS语法动态生成的,可将WHERE条件替换为WHERE GROUPING(date) = 0,过滤逻辑更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:06:03