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.连接
- 结果 * 100
- 结果 || ‘%’
COALESCE
COALESCE
(str1,str2)
使用COALESCE在于大部分包含空值的表达式最终将返回空值。
返回值:返回第一个非NULL表达式的类型