Я использую функцию округления для округления чисел.Вот рабочий пример:
select round(3.0/5,1);
У меня есть таблица с именем «оценок», которая содержит, помимо прочего, столбец с именем «ранг».
Вот пример команды и ее вывод:
=> select rank from ratings limit 5;
rank
------
8.6
8.3
7.7
7
7.9
(5 rows)
Мне бы хотелось получить средний ранг, поэтому я сделал следующее:
=> select avg(rank) from ratings;
avg
------------------
6.93997624861447
(1 row)
Я хотел бы округлить этот результат, чтобы я сделал следующее:
=> select round(avg(rank)) from ratings;
round
-------
7
(1 row)
Я хотел бы сохранить первое десятичное число, однако, поэтому я попробовал это:
=> select round(avg(rank),1) from ratings;
ERROR: function round(double precision, integer) does not exist
LINE 1: select round(avg(rank),1) from ratings;
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Я нахожу чрезвычайно странным, что это работает, потому что я уже тестировал round (float, int)и это работает (см. первый пример).Также раунд, кажется, работает, когда не передано второго аргумента.
Пожалуйста, объясните, что я делаю неправильно, чтобы я мог это исправить.Спасибо