Какой тип данных A и B?
Если вы определите их как десятичные дроби, все значения будут иметь одинаковое назначение:
create table temp.table_name (
A decimal(10,5)
,B decimal(10,5)
)
stored as parquet location '../temp.db/table_name'
;
INSERT INTO TABLE temp.table_name
VALUES (0.33 ,0.55)
,(0.44 ,0.65)
,(10 ,20)
,(10.1 ,10.234)
,(11.236 ,12.8963)
,(12 ,30)
,(30.5698,35.6893);
Результат выбора (Все данные с одинаковой точностью):
+---------------+---------------+--+
| table_name.a | table_name.b |
+---------------+---------------+--+
| 0.33000 | 0.55000 |
| 0.44000 | 0.65000 |
| 10.00000 | 20.00000 |
| 10.10000 | 10.23400 |
| 11.23600 | 12.89630 |
| 12.00000 | 30.00000 |
| 30.56980 | 35.68930 |
+---------------+---------------+--+
Выберите, чтобы получить разницу в десятичных числах:
select a ,b ,( cast(round((b*100),0) as int) -
cast(round((a*100),0) as int)) as res
from temp.table_name;
Результат - разница десятичных знаков:
+-----------+-----------+-------+--+
| a | b | res |
+-----------+-----------+-------+--+
| 0.33000 | 0.55000 | 22 |
| 0.44000 | 0.65000 | 21 |
| 10.00000 | 20.00000 | 1000 |
| 10.10000 | 10.23400 | 13 |
| 11.23600 | 12.89630 | 166 |
| 12.00000 | 30.00000 | 1800 |
| 30.56980 | 35.68930 | 512 |
+-----------+-----------+-------+--+
Надеюсь, это поможет вам.