web-dev-qa-db-ja.com

SQL - 小数点第2位を四捨五入

分を時間に変換し、小数点以下2桁に四捨五入する必要があります。小数点以下2桁まで表示する必要もあります。だから私は650分の分を持っている場合。時間は10.83でなければなりません

これが私がこれまでに持っているものです:

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

しかし、この場合、私の議事録が、例えば、630であれば - 時間は10.5000000です。しかし、私はそれを10.50だけにしたい(四捨五入後)。どうやってこれを達成できますか?

190
user656523

結果をnumeric(x,2)としてキャストできませんか?どこx <= 38

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

返品

10.500000   10.50
340
u07ch

SQL Server 2012と同様に、組み込みの フォーマット関数 を使用できます。

SELECT FORMAT(Minutes/60.0, 'N2')

(さらに読むためだけに...)

63
Matten

あなたが使用することができます

select cast((630/60.0) as  decimal(16,2))
22
Ram
Declare @number float = 35.44987665;
Select round(@number,2) 
10
DECLARE @porcentaje FLOAT

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

SELECT @porcentaje
3
CAST(QuantityLevel AS NUMERIC(18,2))
3
Shahbaz Raees2

あなたの番号をNumericまたはDecimalに変換してください。

クエリを次のものに置き換えます。

SQLサーバー

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

MySql:

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

Cast関数はConvert関数のラッパーです。 SQLをインタプリタ言語とすると、2つの関数が同じ結果を生成しても、Cast関数の舞台裏ではさらに多くのことが起こります。 Convert関数を使うことは小さな節約ですが、小さな節約は倍増します。

2

以下のクエリは便利で簡単です -

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

0.25を出力します。

2
ShaileshDev

PostgresqlとOracleの両方で動作します。

SELECT ename, sal, round(((sal * .15 + comm) /12),2) 
FROM emp where job = 'SALESMAN' 
2
manas mukherjee

あなたが今までの宗派で使うものは10進数であるべきです、例えば1548/10015.00を与えるでしょう

この例で100100.0に置き換えると、15.48が得られます。

select 1548/100 
15.00000

select 1548/100.0
15.4800

0
1
nitin157

以下の答えの補足として、式でINTまたは10進数以外のデータ型を使用する場合は、値に1と好みの小数桁数を掛けてください。

すなわち、 - TotalPackagesINTなので分母TotalContainersですが、結果は小数点以下6桁までにします。

したがって:

((m.TotalPackages * 1.000000) / m.TotalContainers) AS Packages,
1
Fandango68

これを試してください:SELECT CAST(ROUND([Amount 1]/60,2) AS DECIMAL(10,2)) as TOTAL

1
Quintin moodley

次のスニペットが役に立ちます。

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
Venkat

私はSTR関数がこれを達成するための最もクリーンな方法であると思います。

SELECT STR(ceiling(123.415432875), 6, 2)
0
idro2k