sql >> データベース >  >> RDS >> PostgreSQL

Round()がPostgreSQLでどのように機能するか

    PostgreSQLでは、round() 関数は数値の丸めに使用されます。

    この関数は、使用方法に応じて、2つの方法のいずれかで機能します。数値を最も近い整数、または指定した小数点以下の桁数に丸めることができます。

    これは、関数を呼び出すときに関数に渡す引数の数によって決まります。

    構文

    round() 関数は、次のいずれかの方法で使用できます。

    round(dp or numeric)
    round(v numeric, s int)

    最初の構文は、数値を最も近い整数に丸めます。 dp double precisionを示します 。

    2番目の構文は、指定された小数点以下の桁数に丸めます。この場合、v は番号であり、s は小数点以下の桁数です。

    この関数の戻りタイプは入力タイプと同じです。

    最初の構文の例

    これが最初の構文を使用する例です。

    SELECT round(13.50);

    結果:

    14

    この場合、秒の小数部は50であるため、数値は切り上げられます 最も近い整数に。

    分数秒が50未満の場合、切り捨てられ、結果は13になります。

    これがその例です。

    SELECT round(13.49);

    結果:

    13

    2番目の構文の例

    2番目の構文を使用する例を次に示します。

    SELECT round(13.50, 1);

    結果:

    13.5

    この場合、何も切り上げられず、ゼロが単にドロップされました。このような場合、trunc()を使用した場合と同じ結果が返されます。 働き。

    ただし、小数秒をわずかに調整すると、結果が丸められていることがわかります。

    SELECT 
      round(13.45, 1) AS "13.45",
      round(13.44, 1) AS "13.44";

    結果:

    13.45 | 13.44
    -------+-------
    13.5 | 13.4

    ただし、結果は2番目の引数で指定した秒数に完全に依存することに注意してください。

    これも同じ例ですが、小数点以下2桁が指定されています。

    SELECT 
      round(13.45, 2) AS "13.45",
      round(13.44, 2) AS "13.44";

    結果:

    13.45 | 13.44
    -------+-------
    13.45 | 13.44

    この場合、提供した小数点以下の桁数を正確に指定したため、何も丸められませんでした。

    小数秒の追加

    元の数値よりも多くの小数秒を指定することを止めるものは何もありません。

    SELECT 
      round(13.45, 3) AS "13.45",
      round(13.44, 3) AS "13.44";

    結果:

    13.45 | 13.44
    --------+--------
    13.450 | 13.440

    この場合、小数秒の右側にゼロを追加するだけです。

    元の数値に小数秒が含まれていない場合に小数点以下の桁数を指定する例を次に示します。

    SELECT round(12, 3);

    結果:

    12.000

    負の小数点以下の桁数

    2番目の引数が負の値の場合は次のようになります。

    SELECT round(789, -2);

    結果:

    800

    こちらがもう少しです。

    SELECT 
      round(789, -2),
      round(789, -1),
      round(489, -2),
      round(489, -1),
      round(489, -3);

    結果:

    round | round | round | round | round
    -------+-------+-------+-------+-------
    800 | 790 | 500 | 490 | 0

    Round()とTrunc()

    場合によっては、round() 関数はtrunc()と同じように機能するように見える場合があります 。しかし、それらはまったく異なります。

    round() 関数は数値を丸めます。数値は、最も近い整数または指定された小数点以下の桁数に丸められます(1つの引数を指定するか2つの引数を指定するかによって異なります)。

    trunc() 一方、関数は、数値をゼロまたは指定された小数点以下の桁に切り捨てるだけです。丸めは実行されません。

    違いを示す例を次に示します。

    SELECT 
      round(1.49, 1),
      trunc(1.49, 1);

    結果:

    round | trunc
    -------+-------
    1.5 | 1.4

    1. Rails:PG ::UndefinedTable:エラー:リレーション...が存在しません

    2. 安全なTO_NUMBER()

    3. PostgreSQLの台頭:2018年のPostgresの調査結果と2019年のトレンド

    4. テーブルからレコードを削除するPL/SQLプログラム