Как округлять в sql
Перейти к содержимому

Как округлять в sql

  • автор:

Функция CEILING

Функция CEILING используется для округления дробей до целого в большую сторону.

Синтаксис

SELECT CEILING(поле) FROM имя_таблицы WHERE условие

Примеры

таблица employees

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?

screen

Есть данные следующего вида. Надо их округлить до ближайшей 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 условие

Таблицы для примеров

таблица employees

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 ,
    которая округляет дроби в меньшую сторону

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *