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.