SQL - округление до 2 десятичных знаков

Мне нужно конвертировать минуты в часы, округленные до 2 десятичных знаков. Мне также нужно отображать только до 2 чисел после десятичной точки. Так что, если у меня есть минуты как 650. Тогда часы должны быть 10,83

Вот что у меня есть до сих пор

Select round(Minutes/60.0,2) from ....

Но в этом случае, если мои минуты, скажем, 630 - часы - 10,5000000. Но я хочу только 10,50 (после округления). Как мне этого достичь?

Комментарии к вопросу (2)
Решение

Не могли бы вы назвать свой результат числовым (x, 2)? Где x < = 38

select 
    round(630/60.0,2), 
    cast(round(630/60.0,2) as numeric(36,2))

Возвращает

10.500000   10.50
Комментарии (6)

Как и в SQL Server 2012, вы можете использовать встроенную функцию формата:

SELECT FORMAT(Minutes/60.0, 'N2')

(только для дальнейших чтений...)

Комментарии (4)

Вы можете использовать

select cast((630/60.0) as  decimal(16,2))
Комментарии (0)
Declare @number float = 35.44987665;
Select round(@number,2) 
Комментарии (2)
DECLARE @porcentaje FLOAT

SET @porcentaje = (CONVERT(DECIMAL,ABS(8700)) * 100) / CONVERT(DECIMAL,ABS(37020))

SELECT @porcentaje
Комментарии (0)

Работает как с postgresql, так и с Oracle

SELECT ename, sal, round(((sal * .15 + comm) /12),2) 
FROM emp where job = 'SALESMAN' 
Комментарии (0)

То, что вы используете в деноминации, должно быть в десятичном виде, например, «1548/100» даст «15,00»

Если мы заменим 100 на 100.0 в нашем примере, мы получим 15.48

select 1548/100 
15.00000

select 1548/100.0
15.4800

0
Комментарии (0)

Следующий запрос полезен и прост

declare @floatExchRate float;
set @floatExchRate=(select convert(decimal(10, 2), 0.2548712))
select  @floatExchRate

Дает выход как 0,25.

Комментарии (0)

Преобразуйте свой номер в «Числовой» или «Децимальный».

Замените ваш запрос следующим.

Sql сервер

Select Convert(Numeric(38, 2), Minutes/60.0) from ....

MySql:

Select Convert(Minutes/60.0, Decimal(65, 2)) from ....

Функция Cast является оберткой для функции Convert. Соедините это с интерпретируемым языком SQL, и в результате получается, что, хотя две функции дают одинаковые результаты, в функции «Cast» происходит немного больше. Использование функции Convert - это небольшая экономия, но небольшая экономия увеличивается.

Комментарии (0)

В качестве дополнения к приведенным ниже ответам при использовании INT или не десятичных типов данных в ваших формулах не забудьте умножить значение на 1 и количество десятичных знаков, которые вы предпочитаете.

то есть. - «TotalPackages» - это «INT» и, следовательно, знаменатель «TotalContainers», но я хочу, чтобы мой результат имел до 6 десятичных знаков.

таким образом:

((m.TotalPackages * 1.000000) / m.TotalContainers) AS Packages,
Комментарии (0)

попробуйте это: ВЫБЕРИТЕ ПРОШЛОЕ (КРУГЛЫЙ ([Сумма 1] / 60,2) КАК РЕШЕНИЕ (10,2)) как ВСЕГО

Комментарии (0)

Следующий фрагмент может помочь вам:

select SUBSTR(ENDDTTM,1, 9), extract(DAY FROM (ENDDTTM)), ENDDTTM, BEGINDTTM,  (ENDDTTM - BEGINDTTM),substr(BEGINDTTM, 1,15), substr((ENDDTTM - BEGINDTTM), 12, 8),
round((substr((ENDDTTM - BEGINDTTM), 12, 2)* 3600 + substr((ENDDTTM - BEGINDTTM), 15, 2)*60 +  substr((ENDDTTM - BEGINDTTM), 18, 2)),2) as seconds,
round((substr((ENDDTTM - BEGINDTTM), 12, 2)* 60 + substr((ENDDTTM - BEGINDTTM), 15, 2) +  substr((ENDDTTM - BEGINDTTM), 18, 2)/60 ), 2)as minutes,
round((substr((ENDDTTM - BEGINDTTM), 12, 2) + substr((ENDDTTM - BEGINDTTM), 15, 2)/60 +  substr((ENDDTTM - BEGINDTTM), 18, 2)/3600 ),2)  as hours
Комментарии (1)

Я считаю функцию STR самым чистым средством для достижения этой цели.

SELECT STR(ceiling(123.415432875), 6, 2)
Комментарии (0)