old_stalin
@old_stalin

Как решить проблему с round в python (PostgreSQL)?

Не работает функция round до конкретного знака после запятой.
cursor.execute(f"SELECT round(cash,0) FROM users WHERE id = 694973241827000421")

Вылетает ошибка:
cursor.execute(f"SELECT round(cash,0) FROM users WHERE id = 694973241827000421")
psycopg2.errors.UndefinedFunction: function round(double precision, integer) does not exist
LINE 1: SELECT round(cash,0) FROM users WHERE id = 69497324182700042...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
  • Вопрос задан
  • 1061 просмотр
Решения вопроса 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Возможно, потому, что round с указанием точности принимает только тип numeric, а у вас cash имеет тип double precision.
Приведите cash к типу numeric и попробуйте округлить.
Или не указывайте точность округления, тогда можно оставить dp.
Ответ написан
Комментировать
shurshur
@shurshur
Сисадмин, просто сисадмин...
round(cast(cash as numeric), 0)

Или более коротко:

round(cash::numeric, 0)

А так как precision у нас 0 (значение по умолчанию), то его можно опустить, тогда будет без перевода в numeric:

round(cash)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы