Числовой тип данных в SQL
Создание числовых данных в SQL достаточно простое: можно ввести число как литерал, можно получить его из столбца таблицы или сгенерировать его путём вычислений.
При вычислениях можно использовать все стандартные арифметические операции (+, -, *, / и прочие) и изменять приоритеты вычислений с помощью скобок.
SELECT 2 * ((22 - 16) / (2 + 1)) AS calc_example;
Математические функции
Для большинства математических вычислений, таких как получение степени числа или получение квадратного корня, в SQL есть встроенные числовые функции. Вот некоторые примеры данных функций:
Список всех числовых функций, их описание и примеры можно посмотреть в справочнике.
Округление чисел
При работе с числами с плавающей точкой не всегда требуется сохранение или отображение чисел с полной точностью. Так, денежные транзакции можно хранить с точностью до 6 знаков после запятой, а отображать до 2, с точностью до копеек.
Для округления числовых данных в SQL предусмотрены следующие 4 функции: CEIL, FLOOR, ROUND, TRUNCATE.
Функции CEIL, FLOOR направлены на то, чтобы округлять число к ближайшему целому числу в большую и в меньшую сторону соответственно.
SELECT CEILING(69.69) AS ceiling, FLOOR(69.69) AS floor;
Для округления к ближайшему целому числу есть функция ROUND, которая любое число, десятичная часть которого больше или равна 0.5, округляет в большую сторону, иначе в меньшую.
SELECT ROUND(69.499), ROUND(69.5), ROUND(69.501);
Функция ROUND также позволяет округлять число до некоторой части десятичных знаков после запятой. Для этого функция принимает второй необязательный аргумент с указанием количества знаков после запятой, которые требуется оставить.
SELECT ROUND(69.7171,1), ROUND(69.7171,2), ROUND(69.7171,3);
Второй аргумент функции ROUND может принимать также и отрицательные значения. В этом случае, цифры слева от десятичной точки числа становятся равными нулю на указанное в аргументе количество, а дробная часть обрезается.
SELECT ROUND(1691.7,-1), ROUND(1691.7,-2), ROUND(1691.7,-3);
Функция TRUNCATE аналогична функции ROUND, она также способна принимать 2-й необязательный параметр, только вместо округления она просто отбрасывает ненужные цифры.
SELECT TRUNCATE(69.7979,1), TRUNCATE(69.7979,2), TRUNCATE(69.7979,3);
А что вернёт следующее выражение?
SELECT TRUNCATE(69.7979, -1);
Работа со знаковыми числами
При работе с числовыми данными, в которых возможно наличие отрицательных значений, могут быть полезными функции SIGN и ABS.
Функция SIGN возвращает значение -1, если число отрицательно, 0, если число нулевое и 1, если число положительное.
SELECT SIGN(-69), SIGN(0), SIGN(69);
Функция ABS возвращает абсолютное значение числа.
SELECT ABS(-69), ABS(0), ABS(69);