Функция CEILING
Функция CEILING используется для округления дробей до целого в большую сторону.
Синтаксис
SELECT CEILING(поле) FROM имя_таблицы WHERE условие
Примеры
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 100.1 |
| 2 | user2 | 24 | 200.4 |
| 3 | user3 | 25 | 300.9 |
Пример
В данном примере дробная зарплата округляется до целых в большую сторону:
SELECT *, CEILING(salary) as ceiling_salary FROM employees
Результат выполнения кода:
| id айди |
name имя |
age возраст |
salary зарплата |
ceiling_salary округленная зарплата |
|---|---|---|---|---|
| 1 | user1 | 23 | 100.1 | 101 |
| 2 | user2 | 24 | 200.4 | 201 |
| 3 | user3 | 25 | 300.9 | 301 |
Смотрите также
- функцию round ,
которая округляет дроби до нужного знака - функцию FLOOR ,
которая округляет дроби в меньшую сторону - функцию truncate ,
которая усекает числа до нужного знака
Как округлить число в sql
Для округления используется функция ROUND() . Вызванная с одним аргументом она округляет число до ближайшего целого, например:
SELECT ROUND( 10.4 );
Значение 10.4 будет округлено до 10.
Второй аргумент показывает до скольки знаков после запятой нужно округлять:
SELECT ROUND( 10.812, 2 );
В результате мы получим 10.81.
Как правильно округлить число в sql?

Есть данные следующего вида. Надо их округлить до ближайшей 5 или 0, т.е, из 357.3 должно получиться 360, из 16.9 — 15, из 233.9 — 235 и т.д. Никак не могу придумать, как это сделать средствами sql . Придумал только делить числа на 10, округлять и умножать на 10, но это работает только в большую сторону.
Отслеживать
Clark Devlin
задан 5 ноя 2022 в 20:53
Clark Devlin Clark Devlin
1,393 1 1 золотой знак 14 14 серебряных знаков 30 30 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
ROUND(value, -1)
можно конечно в лоб
ROUND(value / 10) * 10
но вроде и первый способ должен сработать, а он всё таки более правильный ибо встроенный функционал
Чтобы не получить ошибку:
[42883] ОШИБКА: функция round(double precision, integer) не существует Подсказка: Функция с данными именем и типами аргументов не найдена. Возможно, вам следует добавить явные приведения типов. Позиция: 8
надо явно преобразовать тип:
select round((v::Decimal),-2) as v from test;
Функция ROUND
Функция ROUND используется для округления дробей до нужного знака в дробной части.
Синтаксис
Округление до целого:
SELECT ROUND(поле) FROM имя_таблицы WHERE условие
Округление до определенного знака в дробной части:
SELECT ROUND(поле, сколько_знаков_оставить) FROM имя_таблицы WHERE условие
Таблицы для примеров
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 100.129 |
| 2 | user2 | 24 | 200.391 |
| 3 | user3 | 25 | 300.934 |
Пример
В данном примере дробная зарплата округляется до целых при выборке:
SELECT *, ROUND(salary) as salary FROM employees
Результат выполнения кода:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 100 |
| 2 | user2 | 24 | 200 |
| 3 | user3 | 25 | 301 |
Пример
В данном примере дробная зарплата округляется до двух знаков после точки:
SELECT *, ROUND(salary, 2) as salary FROM employees
Результат выполнения кода:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 100.13 |
| 2 | user2 | 24 | 200.39 |
| 3 | user3 | 25 | 300.93 |
Пример
В данном примере дробная зарплата округляется до одного знака после точки:
SELECT *, ROUND(salary, 1) as salary FROM employees
Результат выполнения кода:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 100.1 |
| 2 | user2 | 24 | 200.4 |
| 3 | user3 | 25 | 300.9 |
Пример
В данном примере дробная зарплата округляется до целых (0 соответствует целому числу):
SELECT *, ROUND(salary, 0) as salary FROM employees
Результат выполнения кода:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | user1 | 23 | 100 |
| 2 | user2 | 24 | 200 |
| 3 | user3 | 25 | 301 |
Смотрите также
- функцию truncate ,
которая усекает числа до нужного знака - функцию CEILING ,
которая округляет дроби в большую сторону - функцию FLOOR ,
которая округляет дроби в меньшую сторону