Импала с округлением до 10 знаков после запятой

У меня есть столбец в таблице улья, и я хочу использовать и импалу, и улей для запроса этого столбца, и он должен округлить до 10 десятичных значений.

т.е. test_column = 32.542999471999998

select test_column должен вернуть 32.5429994720. Какую функцию я могу использовать в запросе выбора, чтобы вернуть такое значение?


person user2349253    schedule 13.01.2017    source источник


Ответы (2)


Есть решение.

выберите приведение (test_column как десятичное (20,10)) из table_name

Это приведет к: 32.5429994720

где round (test_column, 10) не возвращает требуемый результат.

person user2349253    schedule 13.01.2017
comment
Используйте нижеприведенный. Это будет идеальный ответ. select cast(round(test_column,10) as decimal(20,10)) from table_name В противном случае он не округлит ваши данные, а просто примет десятичное значение. - person Manindar; 27.04.2018
comment
Не могли бы вы указать, используете ли вы Hive или Impala? Ваш ответ кажется противоречащим другому ответу. - person Hennep; 04.01.2021

на Cloudera 5 / RHEL результат не похож на ваш (вы использовали Hive?):

в Импале:

Select cast ( 32.542999471999998 as decimal(20,10))
, ROUND( 32.542999471999998, 10)
, cast(round( 32.542999471999998,10) as decimal(20,10))

приведение (32.542999471999998 как десятичное (20,10)) | круглый (32.542999471999998, 10) | cast (round (32,542999471999998, 10) как десятичный (20,10))

32.5429994719 | 32.5429994720 | 32.5429994720

person InLaw    schedule 30.10.2018