SQL изменяет типы - PullRequest
       10

SQL изменяет типы

1 голос
/ 26 апреля 2011

привет, если у меня есть следующее:

таблица х {

 num1 double precision;
 num2 int;

}

и теперь я хочу узнать num2 / num1 и округлить до 1 десятичного знака.

есть ли способ сделать это в запросе SELECT? для двойной точности .. я должен использовать числовое (4,1) или что-то подобное?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Вы можете использовать round():

SELECT ROUND(num2/num1, 1) FROM x;

PostgreSQL автоматически обновит деление до плавающей запятой, если num1 является плавающей запятой:

> select 3/3.145927;
        ?column?        
------------------------
 0.95361399040727899916
(1 row)

А:

> select round(3/3.145927, 1);
 round 
-------
   1.0
(1 row)
1 голос
/ 08 мая 2011

Расширение ответа мю ... В зависимости от вашей версии postgres, вам может потребоваться добавить явное приведение, потому что round (numeric, int) существует, а round (float, int) не существует:

select round(num1::numeric/num2::numeric, 1);
...