sql统计近半年百分比累加

该SQL查询计算了表t1中两列a和b的占比,并进行了格式化处理。使用NVL处理空值,ROUND进行四舍五入,确保结果保留两位小数。同时,通过COALESCE防止除以零错误。查询结果以百分比形式展示,适用于数据分析场景。
摘要由CSDN通过智能技术生成
SELECT
	rtrim(to_char(round(nvl((sum(t1.a) /
        (sum(t1.a) + sum(t1.b))
        ), 0), 2) * 100, 'FM90D99'), to_char(0, 'D')) || '%' AS resA,
	rtrim(to_char(round(COALESCE((sum(t1.b) /
        (sum(t1.a) + sum(t1.b))
        ), 0), 2) * 100, 'FM90D99'), to_char(0, 'D')) || '%' AS resB,
FROM 表名 t1
        <!-- 近半年 -->
WHERE TO_DATE(t1.DATE, 'yyyyMM') >= add_months(sysdate, -6)

查询结果格式化

rtrim(to_char(str) , ‘FM90D99’), to_char(0, ‘D’))

判空,如果为空返回0

nvl(str,0)
从两个表达式返回一个非 null 值

截取小数点后2位

round(str,2)

百分比: 1.乘100, 2.连接

  1. 结果 * 100
  2. 结果 || ‘%’
COALESCE

COALESCE(str1,str2)

使用COALESCE在于大部分包含空值的表达式最终将返回空值。
返回值:返回第一个非NULL表达式的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值