我有一个百分比列,将值保存为整数。我需要通过乘以百分比列来计算来自支付列的支付百分比。目前,我的表格如下所示:
+----+---------+---------+
| ID | PAYMENT | PERCENT |
+----+---------+---------+
| 1 | 500 | 15 |
| 2 | 75 | 5 |
| 3 | 1250 | 20 |
+----+---------+---------+
我需要输出看起来如下:
+----+---------+---------+-------------+
| ID | PAYMENT | PERCENT | COMMISSION |
+----+---------+---------+-------------+
| 1 | 500 | .15 | 75 |
| 2 | 75 | .05 | 3.75 |
| 3 | 1250 | .20 | 250 |
+----+---------+---------+-------------+
我尝试了以下各种变体,将百分比列转换为小数:
cast(percent as numeric (5,2))
cast(percent as decimal(5,2))
to_char(percent,'9999.99')
答案 0 :(得分:1)
除以100。
SELECT id,
payment,
percent / 100 AS percent,
payment * percent / 100 AS commission
FROM table_name;
因此,对于您的数据:
CREATE TABLE table_name ( id, payment, percent ) AS
SELECT 1, 500, 15 FROM DUAL UNION ALL
SELECT 2, 75, 5 FROM DUAL UNION ALL
SELECT 3, 1250, 20 FROM DUAL;
这将输出:
ID | PAYMENT | PERCENT | COMMISSION -: | ------: | ------: | ---------: 1 | 500 | .15 | 75 2 | 75 | .05 | 3.75 3 | 1250 | .2 | 250
db <>提琴here
还有另一种方法[除以100]吗?
其中任何一个都可以工作:
SELECT id,
percent / 100 AS opt1,
percent * 0.01 AS opt2,
TO_NUMBER( percent || 'e-2' ) AS opt3,
percent * POWER( 10, -2 ) AS opt4,
ROUND(POWER(10,LOG(10, percent)-2),2) AS opt5
FROM table_name;
并输出:
ID | OPT1 | OPT2 | OPT3 | OPT4 | OPT5 -: | ---: | ---: | ---: | ---: | ---: 1 | .15 | .15 | .15 | .15 | .15 2 | .05 | .05 | .05 | .05 | .05 3 | .2 | .2 | .2 | .2 | .2
但是不要;只需使用最简单的方法即可。
db <>提琴here