В этом руководстве вы узнаете, как использовать функцию SQL Server ROUND() для возврата числа, округленного до указанной точности.
- Введение в функцию SQL Server ROUND()
- 1) число
- 2) длина
- 3) операция
- Алгоритм округления
- Примеры функции SQL Server ROUND()
- 1) Пример базовой функции SQL Server ROUND()
- 2) Использование функции ROUND() с положительными числами
- 3) Использование функции ROUND() с отрицательными числами
- 4) Использование функции ROUND() для усечения числа
- 5) Использование функции ROUND() с отрицательной длиной
- 6) Использование функции SQL Serer ROUND() с табличными данными
- Краткое содержание
Введение в функцию SQL Server ROUND()
В SQL Server функция ROUND() позволяет округлить число до указанной точности.
Вот синтаксис функции ROUND():
ROUND(number, length [, operation])
В этом синтаксисе:
1) число
число — числовое значение или числовое выражение, которое требуется округлить.
2) длина
Длина указывает точность, с которой вы хотите округлить число.
Аргумент length может быть литеральным числом или числовым выражением. Тип length должен быть tinyint, smallint или int.
Длина может быть положительной или отрицательной. Если длина — положительное число, функция округляет число до точности, указанной длиной.
Если длина является отрицательным числом, функция округляет число слева от десятичной точки, как указано в параметре длина.
3) операция
Операция указывает тип операции, которую будет выполнять функция ROUND().
- Если операция равна 0, функция ОКРУГЛ округлит число.
- Если операция не равна нулю, функция ROUND() усечет число.
Параметр операции является необязательным и по умолчанию равен 0.
Функция ROUND() возвращает число, тип которого зависит от типа входного числа.
В следующей таблице показаны тип входного числа и соответствующий тип возвращаемого значения функции ROUND():
Тип номера | Тип возврата |
---|---|
tinyint, smallint, int | инт |
bigint | bigint |
десятичные и числовые категории(p, s) | десятичная дробь(п, с) |
деньги и мелкие деньгикатегория | деньги |
категория float и real | плавать |
Алгоритм округления
Функция ROUND() использует алгоритм округления до ближайшей цифры. Вот шаги, которые выполняет функция ROUND() при округлении числа:
- Сначала определите желаемое количество десятичных знаков для округления, указанное в аргументе длины.
- Во-вторых, найдите цифру, стоящую непосредственно справа от нужного десятичного знака.
- В-третьих, если эта цифра 5 или больше, функция округлит цифру до нужного десятичного знака. Если она меньше 5, функция оставит цифру неизменной.
- Наконец, измените все цифры справа от нужного десятичного знака на ноль.
Примеры функции SQL Server ROUND()
Давайте рассмотрим несколько примеров использования функции SQL Server ROUND().
1) Пример базовой функции SQL Server ROUND()
В следующем примере функция ROUND() округляет число до единицы с точностью до двух знаков после запятой:
SELECT ROUND(10.4567, 2) result;
Выход:
result ------- 10.4600
Результат округления — 10,46000, а не 10,46. Причина в том, что функция ROUND() округляет число, но не меняет его тип.
В этом примере тип входного числа — DEC(6,4). Поэтому результатом будет число того же типа — DEC(6,4).
Если вы хотите получить результат в виде числа с двумя знаками после запятой, вы можете сначала округлить число, а затем привести его к нужному числу. Например:
SELECT CAST(ROUND(10.4567, 2) AS DEC(6, 2)) result;
Выход:
result ------- 10.46
2) Использование функции ROUND() с положительными числами
Следующий пример иллюстрирует, как функция ROUND() округляет положительные числа:
SELECT ROUND(10.4567, 2) x, ROUND(10.4519, 2) y;
Выход:
x | y --------+------ 10.4600 | 10.4500
3) Использование функции ROUND() с отрицательными числами
Следующий пример демонстрирует, как функция ROUND() работает с отрицательными числами:
SELECT ROUND(-10.4567,2) x, ROUND(-10.4519,2) y;
Выход:
x | y ---------+-------- -10.4600 | -10.4500
4) Использование функции ROUND() для усечения числа
В следующем примере функция ROUND() используется для усечения десятичного числа до числа с точностью до двух знаков после запятой:
SELECT ROUND(10.4567, 2, 1) result;
Выход:
result -------- 10.4500
В этом примере третий аргумент функции ROUND() равен 1, поэтому она выполняет усечение вместо округления. Поэтому результат равен 10,4500 вместо 10,4600.
5) Использование функции ROUND() с отрицательной длиной
В следующем примере функция ROUND() используется для округления числа слева от десятичной точки с использованием отрицательной длины:
SELECT ROUND(1234.56, -2) result;
Выход:
result ------- 1200.00 (1 row)
6) Использование функции SQL Serer ROUND() с табличными данными
Для демонстрации мы будем использовать таблицу production.products из образца базы данных :
В следующем примере функция AVG() используется для расчета средних цен по прейскуранту всех продуктов в таблице продуктов:
SELECT AVG(list_price) avg_list_price FROM production.products;
Выход:
avg_list_price -------------- 1520.591401
Средняя цена по прейскуранту имеет 6 знаков после запятой.
Чтобы сделать его более читабельным, можно использовать функцию ROUND() для округления средней цены по прейскуранту и функцию CAST() для приведения ее к числу с двумя десятичными знаками:
SELECT CAST(ROUND(AVG(list_price), 2) AS DEC(10, 2)) avg_list_price FROM production.products;
Выход:
avg_list_price -------------- 1520.59
Краткое содержание
- Используйте функцию ROUND(), чтобы вернуть число, округленное до указанной точности.