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

Как в sql округлить значение

  • автор:

Функции ROUND, CEILING, FLOOR в SQL: округление и другие действия с числами

Функция SQL ROUND(результат_вычислений, n) округляет результат вычислений до n-го знака после запятой. Округление производится по правилам арифметики.

Если n — отрицательное число (−n), то округление происходит до n-го знака перед запятой. Таким образом, с помощью функции ROUND можно получить и целое число как результат округления.

Пример 1. В базе данных фирмы есть таблица Staff, содержащая данные о сотрудниках фирмы. Выведем индивидуальные размеры заработной платы сотрудников:

Результатом выполнения запроса будет следующая таблица:

Name Salary
Sanders 18357.5
Pernal 15430.0
Marenghi 17506.8
Doctor 12322.8
Factor 16228.7
Junkers 16232.8
Moonlight 21500.6
Aisen 19540.7
MacGregor 15790.8

Для вычисления среднего размера заработной платы пишем запрос:

Получим следующий результат:

AVG(Salary)
16990.06662326389

Для отчётов результат с таким числом знаков после запятой не годится. Округлим результат до второго знака после запятой с помощью функции ROUND:

Результат будет следующим:

Avg_Salary
16990.07

Пример 2. Теперь округлим результат до первого знака до запятой, применяя в функции ROUND параметр минус единица:

Результат будет следующим:

Avg_Salary
16990

Сместим округление ещё на один знак влево и применим в функции ROUND параметр минус 2:

Результат будет следующим:

Avg_Salary
17000

Функция SQL ROUND может применяться ещё и с третьим необязательными параметром (кроме MySQL). Если этим параметром будет 1, то округление производиться не будет, просто в результате будет оставлено столько знаков после запятой, сколько указано во втором параметре.

Пример 3. Оставить в результате вычислений средней заработной платы два знака после запятой, не производя округления. Применяем функцию ROUND с тремя параметрами:

Результат будет следующим:

Avg_Salary
16990.06

Функция MySQL TRUNCATE

В MySQL аналогом разновидности функции ROUND без округления результата является функция TRUNCATE. Она, как и ROUND в общем случае имеет два параметра: результат вычислений и число знаков после запятой.

Пример 4. Условие то же, что в примере 3, но в MySQL. Применяем функцию TRUNCATE:

Получим результат без округления, как в предыдущем примере:

Avg_Salary
16990.06

Функция SQL CEILING

Функция SQL CEILING не производит округления. Она просто принимает дробное число и возвращает максимальное целое число, не меньшее принятого. Приведём примеры действия функции с различными принятыми дробными числами.

Функция с аргументом Возвращаемое значение
CEILING(0.38) 1
CEILING(1.63) 2
CEILING(−0.38) 0
CEILING(−1.63) −1

В случае функции CEILING некорректно говорить об округлении, поскольку она преобразует числа без учёта правил арифметики.

Функция SQL FLOOR

Функция FLOOR также не производит округления. Её действие противоположно действию функции CEILING. Она принимает дробное число и возвращает максимальное целое число, не большее принятого. Приведём примеры действия функции с различными принятыми дробными числами.

Функция с аргументом Возвращаемое значение
FLOOR(0.38) 0
FLOOR(1.63) 1
FLOOR(−0.38) −1
FLOOR(−1.63) −2

Функция FLOOR, как и функция CEILING, преобразует числа без учёта правил арифметики.

SQL Server функция ROUND

В SQL Server (Transact-SQL) функция ROUND возвращает число, округленное до определенного количества десятичных знаков.

Синтаксис

Синтаксис функции ROUND в SQL Server (Transact-SQL):

Параметры или аргументы

number – число которое округляем.
decimal_places — число десятичных знаков округления. Это значение должно быть положительным или отрицательным целым числом. Если этот параметр опущен, функция ROUND будет округлять число до 0 знаков после запятой.
operation — необязательный. operation может быть либо 0, либо любое другое числовое значение. Когда оно равно 0 (или этот параметр опущен), функция ROUND будет округлять результат до числа decimal_places . Если operation представляет собой любое значение, отличное от 0, функция ROUND усекает результат до числа decimal_places .

Примечание

См. Также функции CEILING И FLOOR.

Применение

Функция ROUND может использоваться в следующих версиях SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Пример

Рассмотрим некоторые примеры SQL Server функции ROUND, чтобы понять, как использовать функцию ROUND в SQL Server (Transact-SQL). Например:

ROUND() Examples in SQL Server

In SQL Server, the T-SQL ROUND() function allows you to round a number to a specified length or precision.

You provide the number as an argument, as well as the length you’d like the number to be rounded to. The function also accepts an optional third argument that allows you to specify whether the number is rounded or truncated.

Syntax

The syntax goes like this:

Where the arguments have the following definitions:

numeric_expression Is an expression of the exact numeric or approximate numeric data type category, except for the bit data type. length Is the precision to which numeric_expression is to be rounded. This argument must be an expression of type tinyint, smallint, or int. When it’s a positive number, numeric_expression is rounded to the number of decimal positions specified by this argument. When it’s a negative number, numeric_expression is rounded on the left side of the decimal point, as specified by this argument. function Is the type of operation to perform. This must be tinyint, smallint, or int. When this argument is omitted or has a value of 0 (default), numeric_expression is rounded. When a value other than 0 is specified, numeric_expression is truncated.

Example 1 – Basic Usage

Here’s a basic example to demonstrate how this function works.

In this case the number is rounded up.

Example 2 – Zero Decimal Places

If we set the second argument to zero, here’s what happens:

This is because we specified zero fractional parts with which to round the number.

And here’s what happens if I change the initial number to 1.50:

Example 3 – More Decimal Places

Here’s an example where the number to be rounded contains more decimal places.

And here’s what happens when I increase the last digit to 5:

Of course, we could use many more decimal places. For example, we could trim a lot of decimal places down.

Example 4 – Truncation (i.e. using a third argument)

As mentioned, we can provide a third argument to specify whether the result is truncated or just rounded. The previous examples are all rounded because we didn’t specify a third argument. When we omit the third argument, a value of 0 is used (which means to round the result). If we provide a value other than 0, the result is truncated.

Example 5 – Using a Negative Value for the Second Argument

Here’s how we can use a negative value on the second argument to cause parts of the non-fractional part to be rounded to zero.

And here’s how it gets rounded if we increase the 3 to 5 or more.

You can do this even if the number contains no fractional part.

Example 6 – Rounding Negative Numbers vs Positive Numbers

As seen in the previous examples, when using positive numbers, a value with a fractional part of .5 or greater is rounded up to the next integer.

However, when using negative numbers, such values are rounded down.

SQL Server: ROUND Function

This SQL Server tutorial explains how to use the ROUND function in SQL Server (Transact-SQL) with syntax and examples.

Description

In SQL Server (Transact-SQL), the ROUND function returns a number rounded to a certain number of decimal places.

Syntax

The syntax for the ROUND function in SQL Server (Transact-SQL) is:

Parameters or Arguments

  • If the operation parameter is 0 (or not provided), the ROUND function will round the result to the number of decimal_places.
  • If the operation parameter is non-zero, the ROUND function will truncate the result to the number of decimal_places.
  • See also the CEILING and FLOOR functions.

Applies To

The ROUND function can be used in the following versions of SQL Server (Transact-SQL):

  • SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Example

Let’s look at some SQL Server ROUND function examples and explore how to use the ROUND function in SQL Server (Transact-SQL).

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

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