Применение округления чисел с помощью функции ROUND в SQL

SQL является универсальным языком для работы с реляционными базами данных. При выполнении аналитических запросов и формировании отчетов часто возникает необходимость в округлении числовых значений. Это позволяет упростить восприятие данных пользователем. Для округления чисел в SQL предназначена встроенная функция ROUND. Давайте подробно разберем ее синтаксис и применение на практических примерах.

Ночной кибергород

Общие сведения о функции ROUND

ROUND является одной из наиболее распространенных математических функций в SQL. Она позволяет округлить число до указанного количества десятичных знаков. Например, вы можете округлить значение до 2 знаков после запятой или до ближайшего целого числа.

Поддержка функции ROUND реализована в таких популярных СУБД как PostgreSQL, MySQL, SQL Server и Oracle. Синтаксис функции в них практически одинаков:

ROUND(numeric_expression, length)

Здесь numeric_expression - это числовое значение, а length определяет точность округления.

Параметры функции ROUND

Рассмотрим подробнее параметры функции ROUND:

  • Первым аргументом является числовое выражение, которое необходимо округлить. Это может быть столбец с числовыми данными, результат вычисления или константа.
  • Второй необязательный аргумент length определяет точность округления. По умолчанию округление происходит до целых чисел. При положительном значении параметра выполняется округление до указанного количества знаков после запятой. При отрицательном значении - до десятков, сотен и так далее в зависимости от модуля числа.
  • Третий опциональный параметр позволяет явно указать режим округления: 0 - округление по правилам математики (по умолчанию) 1 - усечение числа до указанной точности
Кибернетическая рука печатает код

Типы данных

Функция ROUND может принимать числовые значения любых типов данных, как целочисленных, так и с плавающей точкой. Возвращаемое значение будет иметь тот же тип данных, что и аргумент.

Например, в SQL Server при округлении значения типа int будет возвращено целое число. Для float - число с плавающей точкой:

SELECT ROUND(123, 2) AS int_result, -- 123 ROUND(123.456, 2) AS float_result -- 123.46 

Округление с отрицательной точностью

Интересной особенностью ROUND в SQL является возможность округления с отрицательным значением параметра length. В этом случае происходит округление не к десятичным знакам, а к разрядам числа.

Например, чтобы округлить до сотен, используется ROUND(value, -2). Для округления до тысяч применяется ROUND(value, -3) и т.д.

Использование ROUND в запросах

Рассмотрим применение функции ROUND для округления данных в SQL запросах. Возможности здесь очень широкие.

Во-первых, ROUND можно использовать прямо в списке выборки SELECT для округления значений "на лету":

SELECT id, ROUND(price, 2) AS price FROM products

Также функцию округления удобно применять в предикатах условия WHERE. Например, для фильтрации по округленным значениям:

SELECT * FROM sales WHERE ROUND(revenue, -3) > 10000

При необходимости округлить данные сразу во всей таблице или представлении, ROUND можно использовать в операторе UPDATE:

UPDATE products SET price = ROUND(price, 2)

При объединении или группировке таблиц тоже бывает удобно предварительно округлить нужные столбцы, чтобы результирующие записи имели округленные значения.

Кроме того, ROUND позволяет гибко округлять данные во вложенных запросах, CTE, подзапросах и других конструкциях SQL.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.